BeanFactory和ApplicationContext的异同
程序员文章站
2022-04-08 23:03:41
相同: Spring提供了两种不同的IOC 容器,一个是BeanFactory,另外一个是ApplicationContext,它们都是Java interface,ApplicationContext继承于BeanFactory(ApplicationContext继承ListableBeanFa ......
相同:
- spring提供了两种不同的ioc 容器,一个是beanfactory,另外一个是applicationcontext,它们都是java interface,applicationcontext继承于beanfactory(applicationcontext继承listablebeanfactory。
- 它们都可以用来配置xml属性,也支持属性的自动注入。
- 而listablebeanfactory继承beanfactory),beanfactory 和 applicationcontext 都提供了一种方式,使用getbean("bean name")获取bean。
beanfactory 获取bean注册信息
public class helloworldapp{ public static void main(string[] args) { xmlbeanfactory factory = new xmlbeanfactory (new classpathresource("beans.xml")); helloworld obj = (helloworld) factory.getbean("helloworld"); obj.getmessage(); } }
applicationcontext 获取bean注册信息
public class helloworldapp{ public static void main(string[] args) { applicationcontext context=new classpathxmlapplicationcontext("beans.xml"); helloworld obj = (helloworld) context.getbean("helloworld"); obj.getmessage(); } }
但是他们在工作和特性上有一些不同:
- 当你调用getbean()方法时,beanfactory仅实例化bean,而applicationcontext 在启动容器的时候实例化单例bean,不会等待调用getbean()方法时再实例化。
- beanfactory不支持国际化,即i18n,但applicationcontext提供了对它的支持。
- beanfactory与applicationcontext之间的另一个区别是能够将事件发布到注册为监听器的bean。
- beanfactory 的一个核心实现是xmlbeanfactory 而applicationcontext 的一个核心实现是classpathxmlapplicationcontext,web容器的环境我们使用webapplicationcontext并且增加了getservletcontext 方法。
- 如果使用自动注入并使用beanfactory,则需要使用api注册autowiredbeanpostprocessor,如果使用applicationcontext,则可以使用xml进行配置。
- 简而言之,beanfactory提供基本的ioc和di功能,而applicationcontext提供高级功能,beanfactory可用于测试和非生产使用,但applicationcontext是功能更丰富的容器实现,应该优于beanfactory
上一篇: 十天学会php之第九天
下一篇: 安慰人的正常流程
推荐阅读
-
ff chrome和ie下全局动态定位的异同及全局高度的取法_javascript技巧
-
JavaScript:new 一个函数和直接调用函数的异同
-
从源码角度简单看StringBuilder和StringBuffer的异同(全面解析)
-
从源码角度简单看StringBuilder和StringBuffer的异同(全面解析)
-
解析在C#中接口和类的异同
-
笔记本常识:集成显卡和独立显卡的异同
-
解析在C#中接口和类的异同
-
null和undefined的异同
-
VueJs与ReactJS和AngularJS的异同点
-
require(),include(),require_once()和include_once()的异同