ApplicationContext 接口容器和BeanFactory 接口容器

原创 2017年07月26日 23:41:22

ApplicationContext 接口容器
ApplicationContext 用于加载 Spring 的配置文件,在程序中充当“容器”的角色。其实现
类有两个。通过 Ctrl +T 查看:
这里写图片描述
A 、配置文件在类路径下
若 Spring 配置文件存放在项目的类路径下,则使用 ClassPathXmlApplicationContext 实现类进行加载。
这里写图片描述
B 、配置文件在本地目录中
若 Spring 配置文件存放在本地磁盘目录中,则使用 FileSystemXmlApplicationContext 实现类进行加载。
这里写图片描述
C 、配置文件在项目根路径下
若 Spring 配置文件存放在项目的根路径下,同样使用 FileSystemXmlApplicationContext实现类进行加载。
下面是存放在项目根路径下的情况,该配置文件与 src 目录同级,而非在 src 中。
这里写图片描述

这里写图片描述

BeanFactory 接口 容器
BeanFactory 接口对象也可作为 Spring 容器出现。BeanFactory 接口是 ApplicationContext接口的父类。
这里写图片描述
若要创建 BeanFactory 容器,需要使用其实现类 XmlBeanFactory (Ctrl+T 查看继承关系)。
该类可以加载 Spring 配置文件。
这里写图片描述
而 Spring 配置文件以资源 Resouce 的形式出现在 XmlBeanFactory 类的构造器参数中。
Resouce 是一个接口,其具有两个实现类:
ClassPathResource:指定类路径下的资源文件
FileSystemResource:指定项目根路径或本地磁盘路径下的资源文件。
这里写图片描述
在创建了 BeanFactory 容器后,便可使用其重载的 getBean()方法,从容器中获取指定的Bean 对象。
这里写图片描述

这里写图片描述

两个接口容器的区别
虽然这两个接口容器所要加载的 Spring 配置文件是同一个文件,但在代码中的这两个容器对象却不是同一个对象,即不是同一个容器:它们对于容器内对象的装配(创建)时机是不同的。
装配时机测试时需要注意,首先要在容器中对象 StudentServiceImpl 类的无参构造器中添加一个输出语句,以显示其是否执行。
这里写图片描述
A 、ApplicationContext 容器中对象的装配时机
ApplicationContext 容器,会在容器对象初始化时,将其中的所有对象一次性全部装配好。
以后代码中若要使用到这些对象,只需从内存中直接获取即可。执行效率较高。但占用内存。
这里写图片描述
B 、BeanFactory 容器中对象的装配时机
BeanFactory 容器,对容器中对象的装配与加载采用延迟加载策略,即在第一次调用getBean()时,才真正装配该对象。
这里写图片描述

版权声明:本文为博主原创,转载请注明出处(http://blog.csdn.net/jdjh1024).

BeanFactory和ApplicationContext容器的bean后置处理器方式的不同

1.spring.xml   2. import org.springframework.beans.BeansException; import org.springframework.beans...

(一)IOC容器系列的设计与实现:BeanFactory和ApplicationContext

一,综述         在spring IOC容器的设计中,有两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,只实现了容器的基本功能 一个是ApplicationContex...

7.4.1:Spring容器ApplicationContext和BeanFactory

Spring有两个核心接口,BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口。它们都可代表Spring容器,Spr...

9.1-全栈Java笔记: 容器&泛型—认识Collection接口

开发和学习中需要时刻和数据打交道,如果组织这些数据是我们编程中重要的内容。 我们一般通过“容器”来容纳和管理数据。   事实上,数组就是一种容器,可以在其中放置对象或基本类型数据。 ...

java容器类--------Collection接口解析(一)

Ø在程序中用于装其他各种各样对象的一种对象叫做容器。     String[]strs={"hello","world"} 数组也是一种容器,在数组中可以存放其他各种各样的对象。 所...
  • zeq9069
  • zeq9069
  • 2012年10月18日 11:13
  • 1005

java容器(二) Iterator接口

所有实现了Collection接口的容器类都有一个Iterator方法,用以返回一个实现了Iterator接口的对象; Iterator对象称为迭代器,用以方便的实现对容器内元素的遍历操作; Iter...
  • phs999
  • phs999
  • 2017年05月16日 10:01
  • 118

如何重写的 MFC 控件容器接口方法,在 Visual c + + 中的几个默认行为

http://support.microsoft.com/kb/196835   MFC 控件容器支持涉及三个主类: COccManager,COleControlContainer,和 CO...
  • mail_cm
  • mail_cm
  • 2012年02月23日 12:35
  • 1035

11) 为STL容器和数组提供统一的接口DataSet [原创,泛型编程,自由下载转载,需注明出处]

在一些产品上,对于数据块,有些人喜欢用数组,比较典型的C程序员,有些人喜欢用STL容器,对于框架操作,我们通常希望存取这些对象能够使用一套统一的接口去存取它,因为从概念上讲,它们无非就是一组数据的集合...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ApplicationContext 接口容器和BeanFactory 接口容器
举报原因:
原因补充:

(最多只允许输入30个字)