转自:
Spring IoC容器简介说明(BeanFactory和ApplicationContext)
下文笔者讲述Spring IoC容器的简介(BeanFactory和ApplicationContext)说明,如下所示
IoC简介
IoC:
指java开发中
实例的创建不再由调用者管理
而是由Spring容器创建和管理
Spring容器会负责控制程序之间的关系
而不是由程序代码直接控制
即:Spring的控制权由java代码转移到Spring容器中
这种控制的转变,我们称之为“控制反转”IOC
IOC容器实现类简介
Spring的IOC容器 分别为BeanFactory 和 ApplicationContext
BeanFactory: 是SpringIOC容器的顶级接口 在org.springframework.beans.facytory.BeanFactory 接口定义 对外提供完整IoC服务支持 BeanFactory是一个管理Bean工厂 它主要负责初始化各种 Bean 并调用它们的生命周期方法。 BeanFactory接口有多个实现类 如:org.springframework.beans.factory.xml.XmlBeanFactory,此实现类是由XML配置文件中定义装配Bean
例:
BeanFactory定义
BeanFactory beanFactory = new XmlBeanFactory(new FileSystemResource("E://applicationContext.xml"));
ApplicationContext简介
ApplicationContext是BeanFactory子接口 称之为应用上下文 该接口的全路径为org.springframework.context.ApplicationContext 它提供BeanFactory所有功能,还添加了对 i18n(国际化)、资源访问、事件传播等方面的良好支持。
ApplicationContext接口常见实现类
实现类1: ClassPathXmlApplicationContext 该实现类从类路径ClassPath中寻找指定XML配置文件, 找到并装载完成ApplicationContext实例化工作 例: ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation); 实现类2: FileSystemXmlApplicationContext 该实现类从指定的文件系统路径中寻找指定XML配置文件 找到并装载完成ApplicationContext实例化工作 例: ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
FileSystemXmlApplicationContext和ClassPathXmlApplicationContext区别是 在读取 Spring 的配置文件时,FileSystemXmlApplicationContext 不再从类路径中读取配置文件,而通过参数指定配置文件的位置 它可以获取类路径之外的资源,如"D:/workspaces/applicationContext.xml" 实际的Java项目中, 会采用通过ClassPathXmlApplicationContext类实例化ApplicationContext容器的方式 而在Web项目中,ApplicationContext容器的实例化工作会交由Web服务器完成 Web服务器实例化ApplicationContext 容器通常使用基于ContextLoaderListener实现的方式 只需要在web.xml中添加如下代码:contextConfigLocation classpath:spring/applicationContext.xml org.springframework.web.context.ContextLoaderListener
注意事项:
1.BeanFactory和ApplicationContext通过XML配置文件加载Bean
2.BeanFactory和ApplicationContext的区别:
当Bean某一个属性没有注入,则使用 BeanFacotry 加载后,在第一次调用getBean()方法时会抛出异常
ApplicationContext则在初始化时自检,这样有利于检查所依赖的属性是否注入
在日常开发中,必须建议使用ApplicationContext容器,当然如果系统资源较少时,则建议使用BeanFactory容器