zoukankan      html  css  js  c++  java
  • [Js-Spring]Spring中的容器对象,ApplicationContext与BeanFactory接口容器

    Spring 配置容器的两种方式:

    第一种:ApplicationContext 接口容器

    ApplicationContext 接口的继承结构图如下

    A、配置在类路径下,使用 ClassPathXMlApplicationContext 实现类加载

    1 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");

    B、配置在本地磁盘目录下,用 FileSystemXmlApplicationContext 实现类加载

    1 ApplicationContext ac = new FileSystemXmlApplicationContext("D:/applicationContext.xml");

    C、配置在项目根目录下(与 src 包同级),同样用 FileSystemXmlApplicationContext 实现类加载

    1 ApplicationContext ac = new FileSystemXmlApplicationContext("applicationContext.xml");

    获取了 ApplicationContext 容器之后,可以使用 getBean() 方法获取 Bean 对象 

    1 ISomeService service = (ISomeService) ac.getBean("someService");

    第二种:BeanFactory接口容器

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

    若要创建 BeanFactory 容器,需要使用其实现类 XmlBeanFactory ,该类可以加载 Spring 配置文件,而 Spring 配置文件以 Resource 的形式出现在 XMLBeanFactory 的构造参数中,Resource 是一个接口,其具体有两个实现类,

    ClassPathResource:指定类路径下的资源文件

    FileSystemResource:指定项目根路径或者本地磁盘路径下的资源文件 

    1 BeanFactory bf = new XmlBeanFactory(new ClassPathResource("applicationContext.xml"));

    同样创建 BeanFactory 之后可以调用重载的 getBean() 方法获取指定的 Bean 对象

    1 ISomeService service = (ISomeService) bf.getBean("someService");

    两个容器的区别:

      装配时机不同,

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

      BeanFactory 容器,对容器中对象的装配和加载采用延迟加载的策略,即在第一次调用 getBean() 方法的时候,才真正装配对象

  • 相关阅读:
    史上最全web.xml配置文件元素详解
    SpringMVC后台接收list类型的数据的实现方式
    史上最全的maven的pom.xml文件详解
    阿里菜鸟同学迟到的2018年个人总结(文末彩蛋)
    可以落地的DDD到底长什么样?
    欠的债,这一次都还给你们
    主流分布式架构的风流韵事...
    分布式架构的前世今生...
    分布式架构之美~
    征服诱人的Vagrant!
  • 原文地址:https://www.cnblogs.com/jiasq/p/8594725.html
Copyright © 2011-2022 走看看