A DI CONTAINER is a software library that can automate many of the tasks involved in
composing objects and managing their lifetimes. Although it’s possible to write all the
required infrastructure code with POOR MAN’S DI, it doesn’t add much value to an
application. On the other hand, the task of composing objects is of a general nature
and can be resolved once and for all; this is what’s known as a Generic Subdomain.1


A DI CONTAINER is a library that provides DI functionality.

DI CONTAINERS are also known as Inversion of Control (IoC) Containers or
(more rarely) Lightweight Containers.


Don’t expect a DI CONTAINER to magically make tightly coupled
code loosely coupled. A DI CONTAINER can make the use of DI more efficient,
but an application must first and foremost be designed with the DI patterns
and techniques in mind.