- IoC容器管理对象的实例化和初始化,以及对象从创建到销毁的整个生命周期。Spring中使用的对象都有IoC容器管理,不需要我们手动使用new进行创建。
- 由IoC容器管理的对象成为SpringBean,SpringBean就是java对象,和new的对象一样。
- Spring通过读取XML或Java注解中的信息来获取哪些对象需要实例化。
- Spring提供两种类型IoC容器:BeanFactory和ApplicationContext。
- BeanFactory是最简单的容器,由org.springframework.beans.factory.BeanFactory接口定义,采用懒加载(lazy-load),所以容器启动较快。
- 简单来说,BeanFactory就是一个管理Bean的工厂,它主要负责初始化各种Bean,并调用他们的生命周期方法。
- BeanFactory接口有多个实现类,最常见的是org.springframework.beans.factory.xml.XmlBeanFactory。
Resource resource= new ClassPathResource("applicationContext.xml");
BeanFactory xmlBeanFactory = new XmlBeanFactory(resource);
1.2、ApplicationContext容器
AppliccationContext继承了BeanFactory接口,由org.springframework.context.ApplicationContext接口定义,对象在启动容器时加载。ApplicationContext在BeanFactory基础上增加了很多企业级功能,如:AOP、国际化、事件支持等。
- ClassPathXmlApplicationContext:该类从类路径ClassPath中寻找指定的XML配置文件,并完成ApplicationContext实例化工作
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
- FileSystemXmlApplicationContext:
该类从指定的文件系统路径中寻找指定的XML配置文件,并完成ApplicationContext初始化工作。
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
Java 项目中,会采用 ClassPathXmlApplicationContext 类实例化 ApplicationContext 容器的方式,而在 Web 项目中,ApplicationContext 容器的实例化工作会交由 Web 服务器完成。Web 服务器实例化 ApplicationContext 容器通常使用基于 ContextLoaderListener 实现的方式,它只需要在 web.xml 中添加如下代码:
contextConfigLocation classpath:spring/applicationContext.xml org.springframework.web.context.ContextLoaderListener



