BeanFactory和ApplicationContext的异同
程序员文章站
2022-07-05 10:34:00
相同: 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
上一篇: js原生淘宝京东宝贝放大镜效果
推荐阅读
-
require(),include(),require_once()和include_once()的异同
-
Spring 的 BeanFactory 和 FactoryBean 傻傻分不清?
-
【转载】C#中int.TryParse方法和int.Parse方法的异同之处
-
使用epoll实现聊天室功能,同时比较epoll和select的异同
-
明朝的灭亡和清朝的灭亡有哪些异同之处呢?
-
python连接mysql,使用mysqldb和mysqlclient、pymysql三者的异同
-
静态内部类和非静态内部类的异同
-
Beans, BeanFactory和ApplicationContext
-
oracle简单视图read only、check option和默认权限的异同(相对于DML语句)
-
HTTP 和 HTTPS 的异同