Spring IoC Containers:-
The Spring container is at the core of the Spring Framework. The container will create the objects, wire them together, configure them, and manage their complete lifecycle from creation till destruction. The Spring container uses dependency injection (DI) to manage the components that make up an application. These objects are called Spring Beans.
The Spring container gets its instructions on what objects to instantiate, configure, and assemble by reading configuration metadata provided. The configuration metadata can be represented either by XML, Java annotations, or Java code.
The main tasks performed by IoC container are as foolows-
1 Instantiate the application class
2 Configure the object
3 Assemble the dependencies between the objects
There are two types of IoC containers. They are as follows-
1 Spring BeanFactory:-This is the simplest container providing basic support for DI and defined by the org.springframework.beans.factory.BeanFactory interface. The BeanFactory and related interfaces, such as BeanFactoryAware, InitializingBean, DisposableBean, are still present in Spring for the purposes of backward compatibility with the large number of third-party frameworks that integrate with Spring.
The XmlBeanFactory is the implementation class for the BeanFactory interface. To use the BeanFactory, we need to create the instance of XmlBeanFactory class as given below:
Resource resource=new ClassPathResource("applicationContext.xml");
BeanFactory factory=new XmlBeanFactory(resource);
2 Spring ApplicationContext:-This container adds more
enterprise-specific functionality such as the ability to resolve textual
messages from a properties file and the ability to publish application events to
interested event listeners. This container is defined by the
The ApplicationContext container includes all functionality of the BeanFactory container, so it is generally recommended over the BeanFactory.
The ClassPathXmlApplicationContext class is the implementation class of ApplicationContext interface. We need to instantiate the ClassPathXmlApplicationContext class to use the ApplicationContext as given below:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");