BeanFactory和ApplicationContext的异同
相同:
- 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
如对本文有疑问,
点击进行留言回复!!
相关文章:
-
-
-
-
-
-
-
Java人机猜拳
实现:User类public class User {private String name;private i...
[阅读全文]
-
-
-
-
网友评论