spring中提供了另外一个接口ApplicationContext,用于扩展BeanFactory,ApplicationContext提供了更堵的扩展功能
一、设置路径
配置文件路径可以以数组的方式传入,解析及功能实现都在refresh()中实现
![](https://i-blog.csdnimg.cn/blog_migrate/aa7dcea3ce5cdcb5374016b78c813cd1.png)
多配置文件,同时支持系统变量
![](https://i-blog.csdnimg.cn/blog_migrate/3b5044b8e6f6a366eb5cfa89d23496a8.png)
二、扩展功能
![](https://i-blog.csdnimg.cn/blog_migrate/88bafc8158e0c9dab064a97354f7524b.png)
2.1、初始化前的准备工作,例如对系统属性或者环境变量就行准备和验证
![](https://i-blog.csdnimg.cn/blog_migrate/e35f909957f9ad9b5d642296c02d11b2.png)
2.2、初始化BeanFactory,并进行XML文件读取
![](https://i-blog.csdnimg.cn/blog_migrate/4a5f97c4425d7488ce8107cdd9ae68fb.png)
2.3、对Bean进行各种功能填充,@Qualifier和@Autowired填充
![](https://i-blog.csdnimg.cn/blog_migrate/1b745ef277f105d94ebd7938719b89df.png)
2.4、子类覆盖方法做额外的处理
![](https://i-blog.csdnimg.cn/blog_migrate/8889ed7892c9f23e910e7b997b97e43b.png)
2.5、激活各种BeanFactory处理器
![](https://i-blog.csdnimg.cn/blog_migrate/2719739ab0beb436e2023cd492bf6a54.png)
2.6、注册拦截bean创建bean的处理器,这里只是注册操作
![](https://i-blog.csdnimg.cn/blog_migrate/28e3a497166c9e00519d11b7f94057a9.png)
2.7、为上下文初始化Message,对不同语言消息体就行国际化处理
![](https://i-blog.csdnimg.cn/blog_migrate/11423930ad1ba54389b56f99f06270e5.png)
2.8、初始化应用消息广播器,并放入applicationEventMulticaster中
![](https://i-blog.csdnimg.cn/blog_migrate/6ef2a98efa5ce82bbf424cf70c3acb41.png)
2.9、留给子类来初始化其它的bean
![](https://i-blog.csdnimg.cn/blog_migrate/a04d0dba4b8ba43ace032998e5c56398.png)
2.10、在所有注册的bean中查找lister bean,注册到消息广播器中
![](https://i-blog.csdnimg.cn/blog_migrate/f3deba7ba32474b8a49e776ae8ed794b.png)
2.11、初始化剩下的单实例
![](https://i-blog.csdnimg.cn/blog_migrate/5bc075f457038ebae5dcda4c8756c747.png)
2.12、完成刷新过程,通知声明周期处理器lifecycleProcessor刷新过程、同时发出COntextRefreshEnevt通知别人
![](https://i-blog.csdnimg.cn/blog_migrate/f220dcdfccba4f2abda72741c10026b7.png)