BeanFactory和ApplicationContext 区别
程序员文章站
2022-05-24 12:01:00
...
1,两者都是通过xml配置文件加载bean,ApplicationContext和BeanFacotry相比,提供了更多的扩展功能,但其主要区别在于后者是延迟加载,如果Bean的某一个属性没有注入,BeanFacotry加载后,直至第一次使用调用getBean方法才会抛出异常;而ApplicationContext则在初始化自身是检验,这样有利于检查所依赖属性是否注入;所以通常情况下我们选择使用ApplicationContext.
2,BeanFactory 还是 ApplicationContext?
简单的说:除非你有更好的理由,否则尽量使用ApplicationContext,下面是对于哪些"为什么"等等更深入的建议
ApplicationContext包含BeanFactory的所有功能。通常建议比BeanFactory优先,除非有一些限制的场合如字节长度对内存有很大的影响时(Applet)。然后,绝大多数"典型的"企业应用和系统,ApplicationContext就是你需要使用的。Spring2.0及以上版本,大量使用了link linkend="beans-factory-extension-bpp">BeanPostProcessor扩展(以便应用代理等功能),如果你选择BeanFactory则无法使用相当多的支持功能,如事务和AOP,这可能会导致混乱,因为配置并没有错误。
下面的功能矩阵列出了BeanFactory提供的功能和ApplicationContext提供的功能(包括其实现)。(下一节更深度的描述了ApplicationContext比BeanFactory更强的功能。)
表 3.5. Feature Matrix特性表
特性 BeanFactory ApplicationContext
Bean 实例化/装配 Yes Yes
自动 BeanPostProcessor 注册 No Yes
自动 BeanFactoryPostProcessor 注册 No Yes
便捷的 MessageSource 访问( i18n) No Yes
ApplicationEvent 发送 No Yes
推荐阅读
-
php中关于mysqli和mysql区别的一些知识点分析
-
浅谈C#中堆和栈的区别(附上图解)
-
MySQL中interactive_timeout和wait_timeout的区别
-
C#中string和StingBuilder内存中的区别实例分析
-
python类中super()和__init__()的区别
-
iOS开发中关键字const/static/extern、UIKIT_EXTERN的区别和用法
-
Java关键字volatile和synchronized作用和区别
-
详谈Array和ArrayList的区别与联系
-
浅析java中print和println的区别
-
基于Java中throw和throws的区别(详解)