(1)創建 Spring Application 實例,調用 run 方法,同時將啟動入口類作 為參數傳遞進去,由此開始了 Spring Boot 內部相關核心組件以及配置的 啟動和加載;
(2)通過 Spring Factories Loader 加載 META-INF/spring.factories 文 件,獲取並創建 SpringApplicationRunListener 對象;
(3)然后由 SpringApplicationRunListener 來發出 starting 消息;
(4)創建參數,並配置當前 SpringBoot 應用需要使用的 Environment 實 例;
(5)完成之后,依然由 SpringApplicationRunListener 來發出 environmentPrepared 消息;
(6)創建 Spring 的應用上下文實例:ApplicationContext,初始化該實例 並設置應用環境配置實例:Environment,同時加載相關的配置項;
(7)由 SpringApplicationRunListener 發出 contextPrepared 消息,告 知 SpringBoot 應用當前使用的 ApplicationContext 已准備完畢;
(8)將各種 Bean 組件裝載入 Spring 的 IO 容器/應用上下文: ApplicationContext 中,繼續由 SpringApplicationRunListener 來發出 contextLoaded 消息,告知 SpringBoot 應用當前使用的 ApplicationContext 已准備完畢;
(9)重新刷新 Refresh Spring 的應用上下文實例:ApplicationContext, 完成 IOC 容器可用的最后一步;
(10)由 SpringApplicationRunListener 發出 started 消息,完成最終的 程序的啟動;
(11)由 SpringApplicationRunListener 發出 running 消息,告知程序已 成功運行起來了。
附圖1
附圖2