[SpringBoot]圖解SpringBoot啓動流程+獲取配置流程

一、springboot運行流程

1、springboot獲取配置的流程

在這裏插入圖片描述
上圖是對springboot獲取配置流程的簡單總結。

  • 運行主程序時,調用了@SpringBootApplication註解,這個註解又包含一個@Import註解,用於導入配置類。
  • 這個@Import註解會去類路徑下所有的META-INF/spring.factories中去搜索以“AutoConfiguration”爲後綴的配置類;
  • 對找到的每一個××AutoConfiguration配置類,根據其上的@EnableConfigurationProperties註解讀取對於的××Properties類;
  • 將讀取到的××Properties中的屬性值綁定到組件中
  • 取用戶配置文件,將配置的屬性值綁定到組件中
  • 將組件在容器中註冊。

就這樣完成了配置值的獲取。

二、springboot啓動流程

在這裏插入圖片描述
上圖是對springboot啓動流程的簡單總結。
運行主配置類時,主要分爲兩大步驟:首先創建Springboot的Application對象,然後是運行run方法。

2.1創建Springboot的Application對象

創建的對象根據springboot獲取配置的流程,綁定了配置裏面的默認值。
主要實現的功能就是到META-INF/spring.factories目錄下去尋找兩類東西並保存起來。

  • 一個是ApplicationContextInitializer,也就是容器的初始化器;
  • 一個是ApplicationListener,也就是應用程序的監聽。
    保存的東西供run方法運行時調用。

2.2運行run方法

(1)去META-INF/spring.factories目錄下去獲取監聽,注意獲取的是ApplicationRunListener而不是ApplicationListener。
(2)配置環境,然後調用上一步獲取的監聽的environmentPrepared方法表示環境準備完成
(3)創建ioc容器
(4)應用初始化器

  • 將配置好的環境在ioc容器中佈置;
  • 讀取創建Springboot的Application對象是保存的兩類東西的方法,一個是初始化器,一個是contextPrepared方法,也就是告訴系統容器準備就緒。

(5)在ioc中註冊命令行參數對象
(6)調用(1)獲取的ApplicationRunListener中的contextLoaded方法表示上下文環境準備完成
(7)刷新容器:也就是獲取、創建和加載所有的組件、配置類和自動配置類。
(8)從容器中獲取ApplicationRunner和CommandLineRunner,並調用其中的run方法;
(9)調用(1)獲取的ApplicationRunListener中的finished方法表示容器創建完成
(10)返回配置好的ioc容器

文章來源:springboot運行流程和實際應用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章