• Spring IoC容器


    转自:

    Spring IoC容器

    一、Ioc简介


    IoC容器是Spring中的核心
    我们通常也将其称之为Spring容器
    Spring使用IoC容器对对象的实例化和初始化的操作,及管理对象的创建到销毁的生命周期
    Spring中使用的对象全部由IoC容器进行管理,所以在借助Spring开发时,我们无需使用new关键字创建对象

    我们将IoC容器管理的对象称为Spring Bean
    Spring Bean就是 Java 对象,它同new关键字创建的对象相同
    在Spring中我们可以通过XML或Java注解两种方式创建生成Java Bean
     

    二、IoC容器的类型


    Spring中提供2种不同类型的IoC容器,即BeanFactory和ApplicationContext容器

    1. BeanFactory 容器

    BeanFactory是最简单的容器,由org.springframework.beans.factory.BeanFactory接口定义,采用懒加载(lazy-load)-使用时即时加载,所以容器启动比较快。
     BeanFactory只对外提供容器最基本的操作功能
    其功能:为兼容Spring集成的第三方框架(如 BeanFactoryAware、InitializingBean、DisposableBean) 


    BeanFactory:是一个管理Bean 的工厂,它主要负责初始化各种 Bean,并调用它们的生命周期方法。
    BeanFactory 接口有多个实现类,
       如:org.springframework.beans.factory.xml.XmlBeanFactory
       使用 BeanFactory 需要创建 XmlBeanFactory 类的实例,
       通过 XmlBeanFactory 类的构造函数来传递 Resource 对象

    Resource resource = new ClassPathResource("applicationContext.xml"); 
    BeanFactory factory = new XmlBeanFactory(resource);  

    2. ApplicationContext 容器

    ApplicationContext 继承了 BeanFactory 接口,
    由 org.springframework.context.ApplicationContext 接口定义,对象在启动容器时加载

    ApplicationContext 在 BeanFactory 的基础上增加了很多企业级功能,如 AOP、国际化、事件支持等

    ApplicationContext 接口有两个常用的实现类,具体如下。
    1)ClassPathXmlApplicationContext
    该类从类路径 ClassPath 中寻找指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作,具体如下所示。
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
    在上述代码中,configLocation 参数用于指定 Spring 配置文件的名称和位置,如 Beans.xml。
    2)FileSystemXmlApplicationContext
    该类从指定的文件系统路径中寻找指定的 XML 配置文件,并完成 ApplicationContext 的实例化工作,具体如下所示。
    ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);
    它与 ClassPathXmlApplicationContext 的区别是:
    在读取 Spring 的配置文件时,
    FileSystemXmlApplicationContext 不会从类路径中读取配置文件,而是通过参数指定配置文件的位置。
    即 FileSystemXmlApplicationContext 可以获取类路径之外的资源,如“D:/test/Beans.xml”。

    通常在 Java 项目中,会采用 ClassPathXmlApplicationContext 类实例化 ApplicationContext 容器的方式,
    而在 Web 项目中,ApplicationContext 容器的实例化工作会交由 Web 服务器完成。
    Web 服务器实例化 ApplicationContext 容器通常使用基于 ContextLoaderListener 实现的方式,
    它只需要在 web.xml 中添加如下代码:

     
    
        contextConfigLocation
        
        
            classpath:spring/applicationContext.xml
        
    
    
    
        
            org.springframework.web.context.ContextLoaderListener
        
    
    


    注意事项:
      BeanFactory及ApplicationContext 都可采用XML配置文件的方式加载Bean
    二者的区别:
        当Bean中某一个属性没有注入,使用 BeanFacotry 加载后,第一次调用 getBean() 方法时会抛出异常
       而 ApplicationContext 则会在初始化时自检,这样有利于检查所依赖的属性是否注入

    在日常的开发中,我们经常使用ApplicationContext
    在一些特殊的情况下,如:系统资源较少时,才会使用 BeanFactory 

  • 相关阅读:
    【微服务】微服务集成Rocketmq,一篇文章就够了
    docker安装AWVS 23.9.231005181
    用Typescript 的方式封装Vue3的表单绑定,支持防抖等功能。
    HTTP【总结】
    部署zabbix5.4
    #力扣:面试题 02.03. 删除中间节点@FDDLC
    networking /etc/network/interfaces 笔记221102
    apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】
    克诺尔Knorr-Bremse EDI 对接流程
    QT 跨平台检测断网,检测锁屏,检测睡眠,检测屏保功能
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127713823