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!!!
  • 相关阅读:
    《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)
    YII 小模块功能
    Netbeans代码配色主题大搜集
    opensuse 启动巨慢 解决方法 90s多
    opensuse 安装 网易云音乐 rpm netease music
    linux qq rpm deb opensuse
    openSUSE 安装 alien
    第一行代码 Android 第2版
    Android Studio AVD 虚拟机 联网 失败
    docker error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15819296.html
Copyright © 2011-2022 走看看