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()时,才真正装配该对象。

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/wangbin2188/p/9014077.html
Copyright © 2011-2022 走看看