BeanFactory
- Spring里面的
Root接口
,提供了最简单的容器的功能,只提供了实例化Bean和获取Bean的功能
。 - 通常情况,BeanFactory 的实现是使用
懒加载的方式
,这意味着 beans 只有在我们通过 getBean() 方法直接调用它们时才进行实例化。
ApplicationContext
应用上下文
,继承BeanFactory接口以及其他接口,它是Spring的一个更高级的容器,提供了更多有用的功能BeanFactory
:能够管理、装配 BeanResourcePatternResolver
:能够加载资源文件MessageSource
:能够实现国际化功能ApplicationEventPublisher
:能够注册监听器,实现监听机制- …
- 与 BeanFactory 懒加载的方式不同,它是
预加载
,所以,每一个 bean 都在 ApplicationContext 启动之后实例化。
总结
ApplicationContext 包含 BeanFactory 的所有特性,通常推荐使用前者。但是也有一些限制情形,比如移动应用内存消耗比较严苛,在那些情景中,使用更轻量级的 BeanFactory 是更合理的。然而,在大多数企业级的应用中,ApplicationContext 是你的首选
。