SpringBoot的執行流程以及部分原始碼解析
阿新 • • 發佈:2019-01-31
我們從一個簡單的springBoot專案入手,下面是專案的啟動入口兩種實現方式:
通過學習 SpringApplication 原始碼瞭解該類的構造方法裡面初始化很多東西:
具體執行流程可以大致歸納如下:
1. 判斷該專案是否是web 專案,通過比對是否同時滿足存在DispatcherHandler 和 DispatcherServlet 兩個介面
2. 載入所有classpath目錄下 META-INF/spring.factories 中的所有 ApplicationContextInitializer
3. 載入所有classpath目錄下 META-INF/spring.factories 中的所有 ApplicationListener
4. 推斷出 專案的main 方法所在類
4. 執行run 方法
5. 設定讀取 java.awt.headless 系統配置(顏色,字型...)
6. 載入所有classpath目錄下 META-INF/spring.factories 中的所有 SpringApplicationRunnerListener並執行
7. 例項化 ApplicationArguments 引數物件
8. 建立環境 併為 environment 配置屬性主要是run方法裡面傳遞的引數
9. 列印banner 配置容器上下文物件 context 並初始化 執行
本文是本人學習心得體會,如有披露或問題歡迎留言或者入群探討,群裡有分享Springboot 視訊教程以及其他學習視訊資料