当前位置: 移动技术网 > IT编程>开发语言>Java > BeanFactory和ApplicationContext的异同

BeanFactory和ApplicationContext的异同

2019年05月28日  | 移动技术网IT编程  | 我要评论

相同:

  • 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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网