|  | 
 
| 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则在初始化时自检,这样有利于检查所依赖的属性是否注入.
 
 
 
 | 
 |