Spring IoC容器简介说明(BeanFactory和ApplicationContext)
下文笔者讲述Spring IoC容器的简介(BeanFactory和ApplicationContext)说明,如下所示
BeanFactory定义
IoC简介
IoC: 指java开发中 实例的创建不再由调用者管理 而是由Spring容器创建和管理 Spring容器会负责控制程序之间的关系 而不是由程序代码直接控制 即:Spring的控制权由java代码转移到Spring容器中 这种控制的转变,我们称之为“控制反转”IOC
IOC容器实现类简介
Spring的IOC容器 分别为BeanFactory 和 ApplicationContext
BeanFactory
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中添加如下代码: <!--指定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>
注意事项: 1.BeanFactory和ApplicationContext通过XML配置文件加载Bean 2.BeanFactory和ApplicationContext的区别: 当Bean某一个属性没有注入,则使用 BeanFacotry 加载后,在第一次调用getBean()方法时会抛出异常 ApplicationContext则在初始化时自检,这样有利于检查所依赖的属性是否注入 在日常开发中,必须建议使用ApplicationContext容器,当然如果系统资源较少时,则建议使用BeanFactory容器
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。