BeanFacotry是spring中比较原始的Factory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。 ApplicationContext接口,它由BeanFactory接口派生而来,因而提供BeanFactory所有的功能。ApplicationContext以一种更向面向框架的方式工作以及对上下文进行分层和实现继承,ApplicationContext包还提供了以下的功能: • MessageSource, 提供国际化的消息访问 • 资源访问,如URL和文件 • 事件传播 • 载入多个(有继承关系)上下文 ,使得每一个上下文都专注于一个特定的层次,比如应用的web层 具体来说 2者有如下几点区别:1. ApplicationContext是BeanFactory的子接口,具有BeanFactory的所有功能,此外,还提供了其他功能,如:资源访问,事件机制等。 2.BeanFactory只能以java编程显示创建,而ApplicationContext能以声明的方式创建,如使用ContextLoader。当然你也编程的方式创建ApplicationContext实例 。 3.BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化,这样,我们就不能发现一些存在的Spring的配置问题。而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Singleton作用域的Bean以及这些Singleton作用域的bean所引用的bean。这样,在容器启动时,ApplicationContext实例化过程比BeanFactory实例化过程时间和内存开销大,但是我们可以在容器初始化阶段就发现Spring中存在的配置错误。 |
相关文章
- Spring在Filter中记录Web请求Request和返回Response的内容及时长
- 【转】struct和typedef struct在C/C++中的区别
- 在Ruby on Rails中,send_data和send_file有什么区别?
- eclipse的springboot插件,spring tool suite(sts)和 spring ide 的区别
- python中linspace()和arange()的区别
- Java中的接口和抽象类的区别联系
- spring属性配置执行过程,单列和原型区别
- JNI在C和C++中的调用区别
- web应用程序和网站中一般处理程序有区别吗
- 在oracle中where 子句和having子句中的区别