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