1. 程式人生 > 實用技巧 >SpringBoot(一)自動化配置的核心執行原理

SpringBoot(一)自動化配置的核心執行原理

SpringBoot核心執行原理

Spring Boot 最核心的功能就是自動配置,它的功能的實現都是基於“約定優於配置”的原則。那麼 Spring Boot 是如何約定,又是如何實現自動配置功能的呢?
下面我們通過原始碼學習 Spring Boot 的核心運作原理,內容涉及自動配置的運作原理、核心功能模組、核心註解以及使用到的核心原始碼分析。

核心執行原理
使用 Spring Boot 時,我們只需引|入對應的 Starters, Spring Boot 啟動時便會自動載入相關依賴,配置相應的初始化引數,以最快捷、簡單的形式對第三方軟體進行整合,這便是 SpringBoot 的自動配置功能。我們先從整體上看一下 Spring Boot 實現該運作機制涉及的核心部分,如圖 所示:

上圖說明: Spring Boot 通過@EnableAutoConfiguration 註解開啟自動配置,載入 spring.factories 中註冊的各種 AutoConfiguration 類,當某個 AutoConfiguration類滿足其註解@Conditional 指定的生效條件(Starters 提供的依賴、配置或 Spring 容器中是否存在某個 Bean 等)時,例項化該 AutoConfiguration 類中定義的 Bean(元件等),並注入 Spring 容器,就可以完成依賴框架的自動配置。
上圖中各部分參與執行的元件的說明如下:

  1. @EnableAutoConfiguration:該註解由組合註解@SpringBootApplication 引入,完成自動配置開啟,掃描各個jar包下的spring.factories檔案,並載入檔案中註冊的AutoConfiguration類等。
  2. spring.factories:配置檔案,位於 jar 包的 META-INF 目錄下,按照指定格式註冊了自動配置的 AutoConfiguration 類。spring.factories 也可以包含其他型別待註冊的類。該配置檔案不僅存在於 Spring Boot 專案中,也可以存在於自定義的自動配置(或 Starter)專案中。
  3. AutoConfiguration 類:自動配置類,代表了 Spring Boot 中一類以 XXAutoConfiguration命名的自動配置類。其中定義了三方元件整合 Spring 所需初始化的 Bean 和條件。
  4. @Conditional:條件註解及其衍生註解,在 AutoConfiguration 類上使用,當滿足該條件註解時才會例項化 AutoConfiguration 類。
  5. Starters:三方元件的依賴及配置,Spring Boot 已經預置的元件。Spring Boot 預設的Starters 專案往往只包含了一個 pom 依賴的專案。如果是自定義的 starter,該專案還需包含 spring.factories 檔案、AutoConfiguration 類和其他配置類。