• Spring之ApplicationContext


    (1)ApplicationContext接口容器

    ApplicationContext用于加载Spring的配置文件,在程序中充当“容器”的角色。其实现类有两个。通过Ctrl +T查看:

    A、配置文件在类路径下
    若Spring配置文件存放在项目的类路径下,则使用ClassPathXmlApplicationContext实现类进行加载。

    B、配置文件在本地目录中
    若Spring配置文件存放在本地磁盘目录中,则使用FileSystemXmlApplicationContext实现类进行加载。

    C、配置文件在项目根路径下
    若Spring配置文件存放在项目的根路径下,同样使用FileSystemXmlApplicationContext实现类进行加载。
    下面是存放在项目根路径下的情况,该配置文件与src目录同级,而非在src中。

        @Test
        public void test02() {
    //       ClassPathXmlApplicationContext()创建容器, applicationContext.xml需要放在src/resource目录下
            ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
            HelloWorld hw= (HelloWorld) applicationContext.getBean("helloWorld");
            System.out.println("====================================");
            System.out.println(hw.getMessage());
    
        }
    
        @Test
        public void test03() {
    //        使用FileSystemXmlApplicationContext()创建容器,applicationContext.xml需要放在根目录src下
            ApplicationContext applicationContext=new FileSystemXmlApplicationContext("applicationContext.xml");
            HelloWorld hw= (HelloWorld) applicationContext.getBean("helloWorld");
            System.out.println("====================================");
            System.out.println(hw.getMessage());
        }

    (2)BeanFactory接口容器

    BeanFactory接口对象也可作为Spring容器出现。BeanFactory接口是ApplicationContext接口的父类。

    若要创建BeanFactory容器,需要使用其实现类XmlBeanFactory(Ctrl+T查看继承关系)。该类可以加载Spring配置文件。

        @Test
        public void test04(){
    //        这个容器的对象不是在容器初始化时创建的,而是在使用是创建的
            BeanFactory bf=new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));
            HelloWorld hw= (HelloWorld) bf.getBean("helloWorld");
            System.out.println("===================================");
            System.out.println(hw.getMessage());
        }

    而Spring配置文件以资源Resouce的形式出现在XmlBeanFactory类的构造器参数中。Resouce是一个接口,其具有两个实现类:
    . ClassPathResource:指定类路径下的资源文件
    . FileSystemResource:指定项目根路径或本地磁盘路径下的资源文件。

    在创建了BeanFactory容器后,便可使用其重载的getBean()方法,从容器中获取指定的Bean对象。

    (3)两个接口容器的区别

    虽然这两个接口容器所要加载的Spring配置文件是同一个文件,但在代码中的这两个容器对象却不是同一个对象,即不是同一个容器:它们对于容器内对象的装配(创建)时机是不同的。
    装配时机测试时需要注意,首先要在容器中对象StudentServiceImpl类的无参构造器中添加一个输出语句,以显示其是否执行。

    A、ApplicationContext容器中对象的装配时机
    ApplicationContext容器,会在容器对象初始化时,将其中的所有对象一次性全部装配好。以后代码中若要使用到这些对象,只需从内存中直接获取即可。执行效率较高。但占用内存。

    B、BeanFactory容器中对象的装配时机
    BeanFactory容器,对容器中对象的装配与加载采用延迟加载策略,即在第一次调用getBean()时,才真正装配该对象。

  • 相关阅读:
    java开发异常类型汇总
    dm642在线写EPROM.txt
    [Codecademy] HTML&CSS 第一课:HTML Basic
    bram和dram差别
    Advanced Fruits HDU杭电1503【LCS的保存】
    add Admob with Cocos2d-x on iOS
    一种基于Qt的可伸缩的全异步C/S架构server实现(五) 单层无中心集群
    【SSH2框架(理论篇)】--SSH2 Vs 经典三层
    CSS BFC学习笔记
    【智能家居篇】wifi网络结构(上)
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9014077.html
Copyright © 2020-2023  润新知