1初始化SpringApplication應用
2. getSpringFactoriesInstances獲取當前類路徑下META-INF/spring.factories文件中ApplicationContextInitializer拿穴,和ApplicationListener史简, 中配置的所有類蜒简,并實例化,
3.初始化 當前類路徑下META-INF/spring.factories文件中SpringApplicationRunListener中配置的實例默認為EventPublishingRunListener 發(fā)送一個ApplicationStartingEvent事件
4.ApplicationStartingEvent此事件的消費者為2步驟中已經初始化的ApplicationListener的實例LoggingApplicationListener 初始化日志系統(tǒng)遮婶,
5.創(chuàng)建運行環(huán)境ConfigurableEnvironment發(fā)布ApplicationEnvironmentPreparedEvent事件在相應的事件消費者中解析applicaiton.yml, application.properties等配置文件
6,打印banner相關信息
7,創(chuàng)建ApplicationContext
8,初始化ApplicationContext嘲恍,并把ApplicationContext息堂,派發(fā)給所有的SpringApplicationRunListeners 監(jiān)聽者
9 刷新ApplicationContext嚷狞,實際是調用了AbstractApplicationContext.refresh 方法refresh方法內部做了很多事情。比如:完成BeanFactory設置荣堰,BeanFactoryPostProcessor床未、BeanPostProcessor接口回調,Bean加載振坚,國際化配置等薇搁。
10,ApplicationContext渡八,初始化完成之后最后在調用callRunners方法啃洋,執(zhí)行ApplicationRunner、CommandLineRunner接口屎鳍。