本文仅供学习交流使用,侵权必删。
不作商业用途,转载请注明出处
BeanFactory
BeanFactory是Spring Bean容器的根接口,包含了基本对于Spring Bean操作的接口定义,如下图
BeanFactroy
ApplicationContext
ApplicationContext是BeanFactory的子类,从Spring官网解释,ApplicationContext是在BeanFactory的基础上做一个补充:
- 更容易聚合AOP特性
- 消息资源管理(用于国际化)
- 事件发布
- 应用层特定的上下文,例如Web应用程序中使用的WebApplicationContext
BeanFactory与ApplicationContext的关系
从代码来看,以AnnotationConfigApplicationContext为例。AnnotationConfigApplicationContext的getBean方法是父类AbstractApplicationContext实现的
image.png
getBean()的这个方法是从getBeanFactory()返回的beanFactory中获取bean,在AbstractApplicationContext只是一个抽象方法
image.png
具体的实现在GenericApplicationContext中,返回的是DefaultListableBeanFactory,这个也是BeanFactory的一个实现类
image.png
看了源码后可以看出ApplicationContext使用了代理模式,在Spring Bean容器外充当了一层代理,真正在管理Spring Bean对象的是DefaultListableBeanFactory
总结
总的来说,BeanFactory提供了Spring容器最基本的功能,而ApplicationContext是在BeanFactory的基础上添加了更多特定于企业的一些功能。ApplicationContext是BeanFactory一个完整的超集
网友评论