Spring Boot啟動流程


1.創建SpringApplication實例

1)  在SpringApplicaiton構造器中調用initialize(sources)方法。initialize方法中,將sources轉換成list加到this.sources屬性中。

2) 判斷是否為web環境,在類路徑下是否可以加載到Servlet和ConfigurableWebApplicationContext

3) 設置初始化器,從META-INF/spring.factories處讀取配置文件中Key為:org.springframework.context.ApplicationContextInitializer的value,進行實例化操作 

4) 設置監聽器,StopWatch主要是監控啟動過程,統計啟動時間,檢測應用是否已經啟動或者停止。

5) 推斷應用入口類,通過尋找main方法找到啟動主類。

2.執行SpringApplication.run()

1) 獲取SpringApplicationRunListeners,(也是通過META-INF/spring.factories),默認加載的是EventPublishingRunListener。啟動監聽,調用RunListener.starting()方法。

2) 根據SpringApplicationRunListeners以及參數來准備環境,獲取環境變量environment,將應用參數放入到環境變量持有對象中,監聽器監聽環境變量對象的變化(listener.environmentPrepared),打印Banner信息(SpringBootBanner)

3) 創建ApplicationContext(spring上下文AnnotationConfigEmbeddedWebApplicationContext)

4) 創建FailureAnalyzer, 用於觸發從spring.factories加載的FailureAnalyzer和FailureAnalysisReporter實例

5) spring上下文前置處理prepareContext

6) spring上下文刷新refreshContext

7) spring上下文后置處理afterRefresh(ApplicationRunner,CommandLineRunner接口實現類的啟動),返回上下文對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM