BeanFactory和ApplicationContext有什么区别?

BeanFactory

  • Spring里面的Root接口,提供了最简单的容器的功能,只提供了实例化Bean和获取Bean的功能
  • 通常情况,BeanFactory 的实现是使用懒加载的方式,这意味着 beans 只有在我们通过 getBean() 方法直接调用它们时才进行实例化。

ApplicationContext

  • 应用上下文,继承BeanFactory接口以及其他接口,它是Spring的一个更高级的容器,提供了更多有用的功能
  • BeanFactory:能够管理、装配 Bean
  • ResourcePatternResolver:能够加载资源文件
  • MessageSource:能够实现国际化功能
  • ApplicationEventPublisher:能够注册监听器,实现监听机制
  • 与 BeanFactory 懒加载的方式不同,它是预加载,所以,每一个 bean 都在 ApplicationContext 启动之后实例化。

总结

ApplicationContext 包含 BeanFactory 的所有特性,通常推荐使用前者。但是也有一些限制情形,比如移动应用内存消耗比较严苛,在那些情景中,使用更轻量级的 BeanFactory 是更合理的。然而,在大多数企业级的应用中,ApplicationContext 是你的首选

发布了112 篇原创文章 · 获赞 303 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_36221788/article/details/104789510
今日推荐