springboot
1:自動配置原理
出發:
@SpringBootApplication注解:是springboot的核心注解
進入可以得到

可以看到:其具有以下兩個注解
-
@SpringBootConfiguration //表示這是springboot的一個引數 @EnableAutoConfiguration //開啟自動配置功能
對于@SpringBootConfiguration注解,展開來看:

其中要關注以下兩點:
@Import(AutoConfigurationImportSelector.class)
@AutoConfigurationPackage //翻譯為自動配置包
@Import(AutoConfigurationImportSelector.class):其進行了一個匯入,匯入的功能就起著關鍵的作用,可以看到,它實際上匯入了一個類——自動配置匯入選擇器,那么我們可以接著去看這個選擇器究竟是個啥,起了啥作用,
可以看到,在這個類中具有這樣一個方法,選擇匯入(哪些組態檔),顧名思義,這個方法可以獲得我們的專案需要哪些組態檔,可以看到其又呼叫了一個稱為自動獲取所需要的組態檔(getAutoConfigurationEntry())方法

顧名思義,通過這個函式就可以取出當前我們的專案所需要呼叫到哪些具體配置,通過debug可以看到,我的這個專案當前需要呼叫到以下的組態檔

那么,我們便會去想,這個方法是如何去獲取這些組態檔的呢,從圖中可以看到,在getCandidateConfigurations()這個方法執行后,我們所需要得到的組態檔串列大致就獲得了,進入這個獲取候選配置的方法,再進入loadFactoryNames方法


可以看到其中有一個稱為加載spring 工廠的方法,可以見名知意,說明通過這個方法我們可以獲得配置名稱,進入這個方法

可以看到,其實際作業的原理就類似于迭代器的遍歷方法,我們要關注的是,其是從哪里取的資料urls來用于比對的

點開,發現是

這下就全部明了了,總的來說就是從這里取出組態檔的所有資料,來與我們傳入的所需組態檔進行對比,進而來判斷哪些配置是我們需要的,

選擇回到之前,我們還差一個@AutoConfigurationPackage沒有提到,這個注解實際上就說明了我們的spring會自動將獲取包的路徑,進入這個注解:

可以看到其主要功能是基于匯入的這個類實作的,再進入這個Registrar類

其具有兩個方法,我們需要關注的是一個方法,這是一個自動注冊配置包的方法,我們需要關注第二個引數,也就是如何獲取我們所需要注冊的包名,


可以看到,通過這個方法可以獲取當前main方法所在的包的目錄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/153359.html
標籤:Java
下一篇:HotSpot專案結構
