java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > ApplicationContext的启动流程

关于ApplicationContext的启动流程详解

作者:冰糖心书房

ApplicationContext是Spring框架中用于管理和配置Bean的核心接口,它的启动流程包括准备刷新、获取BeanFactory、准备BeanFactory、后置处理BeanFactory、调用BeanFactoryPostProcessor、注册BeanPostProcessor

ApplicationContext的启动流程

1. prepareRefresh()

- 准备刷新:

2. obtainFreshBeanFactory()

- 获取 BeanFactory:

3. prepareBeanFactory(beanFactory)

- 准备 BeanFactory:

4. postProcessBeanFactory(beanFactory)

- BeanFactory 后置处理:

5. invokeBeanFactoryPostProcessors(beanFactory)

- 调用 BeanFactoryPostProcessor:

6. registerBeanPostProcessors(beanFactory)

- 注册 BeanPostProcessor:

7. initMessageSource()

- 初始化 MessageSource:

8. initApplicationEventMulticaster() - 初始化事件广播器:

9. onRefresh()

- 刷新 (可选):

10. registerListeners()

- 注册监听器:

11. finishBeanFactoryInitialization(beanFactory)

- 完成 BeanFactory 初始化:

12. finishRefresh()

- 完成刷新:

13. 异常处理和重置

总结流程图:

+-----------------------+
|   start()             |
+-----------------------+
        |
        V
+-----------------------+
|   refresh()           |
+-----------------------+
        |
        V
+-----------------------+
|   prepareRefresh()    |  (准备刷新)
+-----------------------+
        |
        V
+-----------------------+
| obtainFreshBeanFactory()| (获取 BeanFactory, 加载 Bean 定义)
+-----------------------+
        |
        V
+-----------------------+
| prepareBeanFactory()  |  (准备 BeanFactory)
+-----------------------+
        |
        V
+-----------------------+
|postProcessBeanFactory()| (BeanFactory 后置处理, 可选)
+-----------------------+
        |
        V
+-----------------------+
|invokeBeanFactoryPPs()| (调用 BeanFactoryPostProcessor)
+-----------------------+
        |
        V
+-----------------------+
|registerBeanPostPrcs()| (注册 BeanPostProcessor)
+-----------------------+
        |
        V
+-----------------------+
| initMessageSource()   |  (初始化 MessageSource)
+-----------------------+
        |
        V
+-----------------------+
|initApplicationEventM()| (初始化事件广播器)
+-----------------------+
        |
        V
+-----------------------+
|   onRefresh()         |  (刷新, 可选)
+-----------------------+
        |
        V
+-----------------------+
| registerListeners()   |  (注册监听器)
+-----------------------+
        |
        V
+-----------------------+
|finishBeanFactoryInit()| (完成 BeanFactory 初始化, 实例化单例 Bean)
+-----------------------+
        |
        V
+-----------------------+
|  finishRefresh()      |  (完成刷新, 发布 ContextRefreshedEvent)
+-----------------------+
        |
        V
+-----------------------+
|     容器就绪           |
+-----------------------+

关键点:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文