引言
Spring框架的主要功能是通过其核心容器来实现的。Spring框架提供了两种核心容器,分贝为BeanFactory和ApplicationContex。
1、BeanFactory
BeanFactory是一个管理Bean的工厂,它主要负责初始化各种Bean,并调用它们的生命周期的方法。由org.springframework.beans.factory.BeanFactory接口定义
BeanFactory接口提供了几个实现类,最常用:org.springframework.beans.factory.xml.XmlBeanFactory
该类会根据XML配置文件中的定义来装配Bean
创建BeanFactory实例时,需要提供Spring所管理容器的详细配置信息,配置信息通常采用XML文件形式来管理,语法如下
BeanFactory beanFactory =
new XmlBeanFactory(new FileSystemResouce("F://applicationContex.xml"));
2、ApplicationContext
是Beanfactory的子接口,由org.springframework.context.ApplicationContext接口定义,不仅BeanFactory的所有功能,还添加了国际化、资源访问、事件传播等方面的支持。
创建ApplicationContext接口实例方法
-
通过ClassPathXMLApplicationContext创建
从类路径classPath中寻找指定的XML配置文件,并装载完成ApplicationContext的实例化工作,语法如下
ApplicationContext applicationContext =
new ClassPathXMLApplicationContex(String configLocation);
cnfigLocation参数用于指定Spring配置文件的名称和位置
- 通过FileSystemXmlApplicationContext创建
从指定的文件系统路径(绝对路径)中寻找指定的XML配置文件,并装载完成ApplicationContext的实例化工作,语法如下
ApplicationContext applicationContext =
new FileSystemXmlApplicationContext(String configLocation);
此种方法会导致程序的灵活性变差,所以一般不推荐使用
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>
<!-- 指定以ContextLocation方式启动Spring容器-->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>