BeanFactory和ApplicationContext的异同
相同
- Spring 提供了两种不同的 IOC 容器,一个是 BeanFactory,另外一个是 ApplicationContext,它们都是 Java interface,ApplicationContext 继承于 BeanFactory【ApplicationContext 继承于 ListableBeanFactory => ListableBeanFactory 继承于BeanFactory】
- 它们都可以用来配置 XML 属性,也支持属性的自动注入。
- BeanFactory 和 ApplicationContext 都提供了一种方式,使用 getBean(“bean name”) 获取 bean。
不同
- 当你调用 getBean()方法时,BeanFactory 仅实例化 bean,而 ApplicationContext 在启动容器的时候实例化单例 bean,不会等待调用 getBean()方法时再实例化。
- BeanFactory 不支持国际化,即 i18n,但 ApplicationContext 提供了对它的支持。
- BeanFactory 与 ApplicationContext 之间的另一个区别是 ApplicationContext 能够将事件发布到注册为监听器的 方法中。
applicationContext.publishEvent()
- BeanFactory 的一个核心实现是 XMLBeanFactory 而 ApplicationContext 的一个核心实现是 ClassPathXmlApplicationContext,Web 容器的环境我们使用 WebApplicationContext 并且增加了 getServletContext 方法。
- 如果使用自动注入并使用 BeanFactory,则需要使用 API 注册 AutoWiredBeanPostProcessor,如果使用 ApplicationContext,则可以使用 XML 进行配置。
- 简而言之,BeanFactory 提供基本的 IOC 和 DI 功能,而 ApplicationContext 提供高级功能,BeanFactory 可用于测试和非生产使用,但 ApplicationContext 是功能更丰富的容器实现,应该优于 BeanFactory。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果