Under Revision
Inversion of Control (IoC) is a core principle on which the Spring Framework is based. By using configurations to describe dependencies between components, you can achieve “Loose Coupling”. Among the benefits of loosely coupling components are: reduction of “glue code”, externalization and managing dependencies in single place, improving testability, and adapting a good application design.
IoC can be decomposed into: Dependency Injection (DI) and Dependency Lookup. in its turn, DI is of two forms: Constructor DI and Setter DI. The first can be invoked once at creation time during the object’s lifecycle, while the latter can invoked many times thus allowing for dependency swap and the ability to create the component even if the dependency was not available at that time. Note that Constructor DI is useful in case you absolutely must have an instance of the dependency class before the desired component is used. As for the Dependency Lookup it is also of two forms: Dependency Pull and Contextualized Dependency.