Spring IoC容器简介说明(BeanFactory和ApplicationContext)

书欣 Spring 发布时间:2022-09-05 14:57:18 阅读数:8497 1
下文笔者讲述Spring IoC容器的简介(BeanFactory和ApplicationContext)说明,如下所示

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容器
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202209/4334.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者