BeanFactory 就是一个能够管理配置对象的一个接口,提供基础的功能
ApplicationContext 则是 BeanFacotry 的一个子接口,提供了更多的功能(相当于 BeanFactory 的超集)
-
更容易的去整合 Spring AOP
-
消息源的处理(国际化)
-
事件的发布
-
应用级别的上下文 如 WebApplicationContext
继承关系
类继承关系
接口继承关系
当需要获取 beanFactory 的时候直接类型转换就够了嘛?
可以看到这里其实是用 (实现接口+组合)的方式来实现的
结构上是组合模式,方法实现就是代理模式,所有 ApplicationContext 类中的 getBean() 方法其实都会代理给 beanFactory 来实现。
当我们获取了 ApplicationContext 的时候,要得到真正的 beanFactory 时,就需要从中 get 出来,而非理所当然的认为他们是等价的。