EnableAutoConfiguration工作原理

spring boot ------@EnableAutoConfiguration工作原理

?


首先看下 EnableAutoConfiguration 這個(gè)類,這個(gè)類里面有兩個(gè)方法

這個(gè)兩個(gè)其實(shí)我們都知道是排除配置類的方法

exclude:? 類.class

excludeName:? 這個(gè)是類的全路徑。

其實(shí) 這個(gè)里面主要核心Ipmort 這個(gè)注解,我們可以點(diǎn)進(jìn)去看一下




我們可以看到這個(gè)這個(gè)類實(shí)現(xiàn)了DeferredImportSelector,

DeferredImportSelector這個(gè)類又繼承了ImportSelector

我們回過(guò)頭來(lái)看AutoConfigurationImportSelector 這個(gè)類里面的selectImports 這個(gè)方法這個(gè)方法是重寫了 ImportSelector這個(gè)類的方法,



可以看下這個(gè)文件


通過(guò)SpringFactoriesLoader.loadFactoryNames() 這個(gè)方法讀取NETA-INF/spring.factories 這個(gè)文件里面key(一個(gè)類)?對(duì)應(yīng)的value值 多個(gè)會(huì)用逗號(hào)隔開,然后把這些自動(dòng)配置的類的全名類返回。然后返回的數(shù)組里面的className就會(huì)被spring 納入容器管理起來(lái)。

其內(nèi)部關(guān)鍵點(diǎn):

1.ImportSelector 該方法的返回值會(huì)納入spring 容器種中

2.SpringFactoriesLoader.loadFactoryNames() 讀取classPtah下面META-INF/spring.factories下面的配置類。

我們也可以在自己的目錄下面去新建META-INF/spring.factories這樣的文件,在里面可以去配置自己想要加載的類。

以上說(shuō)的不是很好,如果有不對(duì)的地方請(qǐng)指出來(lái), 謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容