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接口。
网友评论