This chapter covers the Spring Framework implementation of the Inversion of Control (IoC) principle. IoC is also known as dependency injection (DI). It is a process whereby objects define their dependencies, that is, the other objects they work with, only through constructor arguments, arguments to a factory method, or properties that are set on the object instance after it is constructed or returned from a factory method. The container then injects those dependencies when it creates the bean. This process is fundamentally the inverse, hence the name Inversion of Control (IoC), of the bean itself controlling the instantiation or location of its dependencies by using direct construction of classes, or a mechanism such as the Service Locator pattern.
org.springframework.context packages are the basis for
Spring Framework's IoC container. The
interface provides an advanced configuration mechanism capable of managing
any type of object.
is a sub-interface of
BeanFactory. It adds
easier integration with Spring's AOP features; message resource handling
(for use in internationalization), event publication; and
application-layer specific contexts such as the
WebApplicationContext for use in web
In short, the
the configuration framework and basic functionality, and the
ApplicationContext adds more
enterprise-specific functionality. The
ApplicationContext is a complete superset
BeanFactory, and is used exclusively
in this chapter in descriptions of Spring's IoC container. For
more information on using the
ApplicationContext, refer to Section 3.14, “The BeanFactory”.
In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans. A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container. Otherwise, a bean is simply one of many objects in your application. Beans, and the dependencies among them, are reflected in the configuration metadata used by a container.