Spring Boot啓動流程

1.建立SpringApplication實例web

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

2) 判斷是否爲web環境,在類路徑下是否能夠加載到Servlet和ConfigurableWebApplicationContextthis

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

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

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

2.執行SpringApplication.run()io

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接口實現類的啓動),返回上下文對象

相關文章
相關標籤/搜索