SpirngCloud核心SpringBoot自動裝配原理

自動裝配原理分析.png

自動裝配是SpringBoot中通過@EnableAutoCinfiguration注解來開啟的,這個注解的聲明在啟動類注解@SpringBootApplication內(nèi);


image.png

注:

@Enable注解:在Spring3.1就已經(jīng)支持該類型注解,主要作用是吧相關(guān)組件的Bean裝配到IOC容器中;@Enable注解是對JavaConfig的進一步完善,為使用S任憑Framework的開發(fā)者減少了配置代碼量,降低了使用難度;
如果基于JavaConfig的形式來完成Bean的加載,則必須使用@Configuration注解及Bean注解;而@Enable本質(zhì)上就是對著兩個注解的封裝;

@EnableAutoConfiguration

進入該注解可以看到除了@Import為還有一個@AutoConfigurationPackage(作用見圖),而可以看見Import中引入了一個AutoConfigurationImportSelector,該AutoConfigurationImportSelector實現(xiàn)了ImportSelector,他只有一個selectImports抽象方法,并返回一個String數(shù)組,在這個shuzh中可以指定需要裝配到IOC容器的類;


image.png

在selectImports方法中,這個方法主要有兩個功能
1.AutoConfigurationMetadataLoader.loadMetadata從META-INF/Spring-autoconfigure-metadata.properties中加載自動裝配的條件元數(shù)據(jù)
2.收集所有符合條件的配置類AutoConfigurationEntry.getConfigurations(),完成自動裝配
需要注意的是在AutoConfigurationImportSelector中不執(zhí)行selectImports()方法,而是通過ConfigurationClassPostProcessor中的processConfigBeanDefinitions方法來掃描和注冊所有配置類的Bean,最終還是會調(diào)用getAutoConfigurationEntry方法獲得所有需要自動裝配的類;
在getAutoConfigurationEntry方法中通過去重等操作,得到最終需要實現(xiàn)自動裝配的類;而得到的核心方法是getCandidateConfigurations


image.png

在該方法中
image.png

使用了SpringFactoriesLoader,它會掃描classPath下的META-INF/Spring.factories文件;根據(jù)配置文件中的key得到value值

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容