11.15 Spring Ioc容器
Ioc容器在Spring当中的地位
地位:
-
Spring的核心
作用:
-
Spring通过IoC容器管理对象的实例化、初始化 -
管理对象从创建到销毁的整个生命周期
管理方式:
-
读取
XML -
读取
Java注解
Spring的IoC容器类型
BeanFactory容器
ApplicationContext容器
BeanFactory容器
特点:
-
由
org.springframework.beans.factory.BeanFactory接口定义 -
采用懒加载(
lazy-load)容器启动快 -
一个
Bean工厂,主要负责初始化各种 Bean,并调用它们的生命周期方法。 -
BeanFactory容器本身是一个接口,有多个实现类。
常见的BeanFactory实现类:
org.springframework.beans.factory.XmlBeanFactory
通过XmlBeanFactory类的构造函数传递Resource进而使用BeanFactory
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
ApplicationContext容器
特点:
-
继承了
BeanFactory接口,由org.springframework.context.ApplicationContext接口定义 -
启动容器时加载
ApplicationContext接口的两个实现类:
-
ClassPathXmlApplicationContext -
FileSystemXmlApplicationContext
ClassPathXmlApplicationContext
该类作用:
-
从类路径中寻找指定的
XML配置文件,完成ApplicationContext的实例化工作
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
/*形参是指定的Spring配置文件的名称和位置*/
FileSystemXmlApplicationContext
该类作用:
-
从指定的文件系统路径中寻找指定的
XML配置文件,并完成ApplicationContext的实例化
ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
与ClassPathXmlApplicationContext的区别:
-
FlieSystemXmlApplicationContext不会从类路径中读取Spring的配置文件。而是通过参数指定配置文件的位置--->该实现类可以获取类路径之外的资源 -
Java项目中多采用ClassPathXmlApplicationContext类实例化ApplicationContext容器 -
Web项目中ApplicationContext容器实例化工作会由Web服务器完成,使用基于ContextLoaderListener的方式,在Web.xml中添加
<!--指定Spring配置文件的位置,有多个配置文件时,以逗号分隔-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--spring将加载resources目录下的applicationContext.xml文件-->
<param-value>
classpath:resources/applicationContext.xml
</param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动Spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
注意:
-
BeanFactory和ApplicationContext都是通过XML配置文件加载Bean的
二者区别:
BeanFactory:
-
如果
Bean的某一个属性没有注入,使用BeanFacotry加载后,第一次调用getBean()方法时会抛出异常
ApplicationContext:
-
如果
Bean的某一个属性没有注入,初始化的时候会自检

浙公网安备 33010602011771号