Spring中的容器:
BeanFactory
全名:org.springframework.beans.factory.BeanFactory
概念:BeanFactory是Spring框架最核心的接口,它提供了IoC机制,实现了依赖注入的功能,
说明:BeanFactory负责管理bean的生命周期(bean的加载、实例化等)、维护bean之间的依赖关系,一般将BeanFactory称为IoC容器。
ApplicationContext
1)全名:org.springframework.context.ApplicationContext
2)概念:ApplicationContext接口继承了BeanFactory接口,在BeanFactory的基础上,ApplicationContext提供了更多功能:
1>提供访问资源(RUL或文件)的通用方法:applicationContext.getResource("classpath:db.properties");
2>支持事件机制
3>支持I18N
3)获取ApplicationContext的方法:
1>FileSystemXmlApplicationContext:
// 从文件系统或者url指定的xml配置文件创建,参数为配置文件名或文件名数组。
FileSystemXmlApplicationContext context = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
2>ClassPathXmlApplicationContext:
// 根据classpath下的xml配置文件来创建,可以从jar包中读取配置文件。
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
3>WebApplicationContextUtils:
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
4)Web应用中ApplicationContext的加载:
概念:通过Servlet监听器的方式(需要在web.xml中配置),Web容器(eg:tomcat)自动加载配置文件并初始化ApplicationContext。
代码:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 若不指定配置文件的位置,则Web容器默认会去加载/WEB-INF/applicationContext.xml文件。 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext.xml</param-value>
</context-param>
二者的比较:
BeanFactory是Spring框架的基础设施,面向Spring本身;ApplicationContext面向使用Spring框架的开发者。
Spring中的容器
最新推荐文章于 2023-09-03 18:58:38 发布