SpringBoot启动过程解析

简要记录一下跟踪spring boot启动的过程。
1,SpringBoot默认从SpringApplication.run启动。
2,调用new SpringApplication(primarySources).run(args);
3,执行如下动作:

  • 搜索并读取spring.factory文件,组成LinkedMultiValueMap
  • 获取ApplicationContextInitializer
  • 获取ApplicationListener
    大家可能觉得ApplicationContextInitializer更重要,其实启动的核心是ApplicationListener

4, 获取SpringApplicationRunListener,实际是EventPublishingRunListener。
EventPublishingRunListener的作用就是发送消息,有如下消息:

  • ApplicationStartingEvent
  • ApplicationEnvironmentPreparedEvent
  • ApplicationPreparedEvent
  • ContextRefreshedEvent
  • ApplicationStartedEvent
  • ApplicationReadyEvent
    这些消息被ApplicationListener监听并处理。

5,第一轮消息:ApplicationStartingEvent
LoggingApplicationListener 初始化日志
DelegatingApplicationListener

6,第二轮消息:ApplicationEnvironmentPreparedEvent

  • BootstrapApplicationListener的onApplicationEvent读取bootstrap配置并创建一个SpringApplicatin,并创建ApplicationContext.并读取bootstrap文件.

  • ConfigFileApplicationListener
    读取配置文件

  • DelegatingApplicationListener
    BootStrap时处理列表为空 获取的环境的context.listener.classes参数的值

7,第三轮消息:ApplicationPreparedEvent
- ConfigFileApplicationListener
PropertySourceOrderingPostProcessor
- LoggingApplicationListener
注入springBootLoggingSystem Bean
- RestartListener
获取context并放入自己的变量
- DelegatingApplicationListener

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值