|
spring的核心容器
1、BeanFactory
简单来说,BeanFactory就是一个管理Bean的工厂,主要负责初始化各种Bean,并调用它们的生命周期方法.
创建BeanFactory实例时,需要提供Spring管理的详细配置信息,这些信息采用XML文件形式来管理,加载配置信息的语法如下:
BeanFactory beanFactory=new XmlBeanFactory(new fileSystemResource("F:/applicationContext.xml"))
2.ApplicationContext
ApplicationContext是BeanFactory的子接口,也被称为应用上下文,不仅包含了BeanFactory的所有功能,还添加了对国际化、资源访问、事件传播等方面
的支持。
创建ApplicationContext接口实例,通常采用两种方法
1)通过ClassPathXmlApplicationContext创建
ApplicationContext applicationContext=new ClassPathXmlApplicationContext(String configLocation);
configLocation参数用于指定Spring配置文件的名称和位置
2)通过FileSystemXmlApplicationContext创建
ApplicationContext applicationContext=new FileSystemXmlApplicationContext(String configLocation);
与ClassPathXmlApplicationContext不同的是,在读取spring的配置文件时,FileSystemXmlApplicationContext不再从类路径中读取配置文件,而是通过参数
指定配置文件的位置,例如F:/workspace/applicationContext.xml
web服务器实例化ApplicationContext容器时,通常会使用基于ContextLoaderListener实现的方式,此种方式只需要在web.xml中添加如下代码:
<!--指定spring配置文件的位置,多个配置文件时,以逗号分开-->
<context-param>
<param-name>contextConfigLocation</param-name>
<!--spring将加载spring目录下的applicationContext.xml文件-->
<param-value>
classpath:spring/applicationContext.xml
</param-value>
</context-param>
<!--指定以ContextLoaderListener方式启动spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
两者区别如下:
相同点:都是通过xml配置文件加载Bean的
不同点:如果Bean的某一个属性没有注入,使用BeanFactory加载后,在第一次调用getBean()方法时会抛出异常,而ApplicationContext则在初始化时自检,这样有利于检查所依赖的属性是否注入.
|
|