[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() 方法的时候,才真正装配对象

 

posted @ 2018-03-18 11:15  Js_zero  阅读(175)  评论(0编辑  收藏  举报