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

首先看下 EnableAutoConfiguration 這個(gè)類,這個(gè)類里面有兩個(gè)方法
這個(gè)兩個(gè)其實(shí)我們都知道是排除配置類的方法
exclude:? 類.class
excludeName:? 這個(gè)是類的全路徑。
其實(shí) 這個(gè)里面主要核心Ipmort 這個(gè)注解,我們可以點(diǎn)進(jìn)去看一下


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), 謝謝。