zoukankan      html  css  js  c++  java
  • 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()时,才真正装配该对象。

  • 相关阅读:
    敌兵布阵(线段树)
    确定比赛名次(拓扑排序)
    Virtual Friends(并查集+map)
    A Bug's Life(向量偏移)
    Segment set(线段并查集)
    带权值得并查集
    Farm Irrigation(非常有意思的并查集)
    小希的迷宫
    Hadoop, Hadoop涉及到的一些常见概念(分布式与集群、HDFS、MapReduce等),Hadoop怎么用?
    Hadoop 的安装和使用(基于Linux~Ubuntu的虚拟机)
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9014077.html
Copyright © 2011-2022 走看看