BeanFactory和ApplicationContext有什么区别

相同

  • spring提供了两种不同的IOC容器,一个是BeanFactory,另外一个就是ApplocationContext,他们都是java 接口,ApplicationContext 继承于BeanFactory。

  • 他们都可以用来配置XML属性,也支持属性的自动注入。

  • 而 ListableBeanFactory 继承于BeanFactory。BeanFactory和ApplocationContext都是提供了一种方式,使用getBean(“bean name”)获取bean。

不同

  • 当你调用getBean()方法时,BeanFactory仅实例化bean,而ApplocationContext在启动容器的时候实例化单例bean,不会等调用getBean时才实例化。
  • BeanFactory不支持国际化,即i18n,但ApplocationContext提供了支持。
  • BeanFactory于ApplocationContext之间的另一个区别是能够将事件发布到注册为监听的bean。
  • BeanFactory的一个核心实现是XMLBeanFactory,而ApplocationContext的一个核心实现是classPathXmlApplocationContext,Web容器的环境我们使用WebApplocationContext并且添加了getServietContext方法。
  • 如果使用自动注入并使用BeanFactory,则需要使用API注册AutoWiredBeanPostProcessor,如果使用ApplocationContext则可以使用XML进行配置。
  • 简而言之,BeanFactory提供了基本的IOC和DI功能,而ApplocationContext提供了高级的功能,BeanFactory可以用于测试和非生产,单ApplocationContext是功能更丰富的容器实现,应该优先于BeanFactory。

-------------本文结束感谢您的阅读-------------