springboot启动流程介绍

1初始化SpringApplication应用

2. getSpringFactoriesInstances获取当前类路径下META-INF/spring.factories文件中ApplicationContextInitializer,和ApplicationListener, 中配置的所有类,并实例化,

3.初始化 当前类路径下META-INF/spring.factories文件中SpringApplicationRunListener中配置的实例默认为EventPublishingRunListener 发送一个ApplicationStartingEvent事件

4.ApplicationStartingEvent此事件的消费者为2步骤中已经初始化的ApplicationListener的实例LoggingApplicationListener 初始化日志系统,

5.创建运行环境ConfigurableEnvironment发布ApplicationEnvironmentPreparedEvent事件在相应的事件消费者中解析applicaiton.yml, application.properties等配置文件

6,打印banner相关信息

7,创建ApplicationContext

8,初始化ApplicationContext,并把ApplicationContext,派发给所有的SpringApplicationRunListeners 监听者

9 刷新ApplicationContext,实际是调用了AbstractApplicationContext.refresh 方法refresh方法内部做了很多事情。比如:完成BeanFactory设置,BeanFactoryPostProcessor、BeanPostProcessor接口回调,Bean加载,国际化配置等。

10,ApplicationContext,初始化完成之后最后在调用callRunners方法,执行ApplicationRunner、CommandLineRunner接口。

你可能感兴趣的:(springboot启动流程介绍)