zoukankan      html  css  js  c++  java
  • 11.15 Spring Ioc容器

    11.15 Spring Ioc容器

    Ioc容器在Spring当中的地位

    地位:

    • Spring的核心

    作用:

    • Spring通过IoC容器管理对象的实例化、初始化

    • 管理对象从创建到销毁的整个生命周期

    管理方式:

    • 读取XML

    • 读取Java注解

    Spring的IoC容器类型

    • BeanFactory容器

    • ApplicationContext容器


    BeanFactory容器

    特点:

    • org.springframework.beans.factory.BeanFactory接口定义

    • 采用懒加载(lazy-load)容器启动快

    • 一个Bean工厂,主要负责初始化各种 Bean,并调用它们的生命周期方法。

    • BeanFactory容器本身是一个接口,有多个实现类。

    常见的BeanFactory实现类:

    org.springframework.beans.factory.XmlBeanFactory

    通过XmlBeanFactory类的构造函数传递Resource进而使用BeanFactory

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

    ApplicationContext容器

    特点:

    • 继承了BeanFactory接口,由org.springframework.context.ApplicationContext接口定义

    • 启动容器时加载

    ApplicationContext接口的两个实现类:

    • ClassPathXmlApplicationContext

    • FileSystemXmlApplicationContext

    ClassPathXmlApplicationContext

    该类作用:

    • 从类路径中寻找指定的XML配置文件,完成ApplicationContext的实例化工作

    ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocation);
    /*形参是指定的Spring配置文件的名称和位置*/
    FileSystemXmlApplicationContext

    该类作用:

    • 从指定的文件系统路径中寻找指定的XML配置文件,并完成ApplicationContext的实例化

    ApplicationContext applicationContext = new FileSystemXmlApplicationContext(String configLocation);

    ClassPathXmlApplicationContext的区别:

    • FlieSystemXmlApplicationContext不会从类路径中读取Spring的配置文件。而是通过参数指定配置文件的位置--->该实现类可以获取类路径之外的资源

    • Java项目中多采用ClassPathXmlApplicationContext类实例化ApplicationContext容器

    • Web项目中ApplicationContext容器实例化工作会由Web服务器完成,使用基于ContextLoaderListener的方式,在Web.xml中添加

    <!--指定Spring配置文件的位置,有多个配置文件时,以逗号分隔-->
    <context-param>
       <param-name>contextConfigLocation</param-name>
       <!--spring将加载resources目录下的applicationContext.xml文件-->
       <param-value>
          classpath:resources/applicationContext.xml
       </param-value>
    </context-param>
    <!--指定以ContextLoaderListener方式启动Spring容器-->
    <listener>
       <listener-class>
          org.springframework.web.context.ContextLoaderListener
       </listener-class>
    </listener>

    注意:

    • BeanFactoryApplicationContext都是通过XML配置文件加载Bean

    二者区别:

    BeanFactory

    • 如果Bean的某一个属性没有注入,使用BeanFacotry加载后,第一次调用getBean()方法时会抛出异常

    ApplicationContext

    • 如果Bean的某一个属性没有注入,初始化的时候会自检

    实际开发过程中常使用ApplicationContext

    It's a lonely road!!!
  • 相关阅读:
    Grails
    Grails
    Grails
    Grails
    Grails
    Grails
    PG
    TopShelf安装多实例
    Js 实现自定义事件
    HttpContext未null处理
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15819296.html
Copyright © 2011-2022 走看看