SpringBoot高級-自動配置之@EnableAutoConfiguration注解


前言:通過之前的自動配置原理相關介紹的文章,我們對自動配置的流程大概都很清楚了,這里我們對 @EnableAutoConfiguration 注解的實現流程進行跟蹤,發掘源碼中實現的原理。

一、查看@EnableAutoConfiguration 注解的定義

二、查看@Import導入的ImportSelector接口實現類 AutoConfigurationImportSelector

三、查看實現類 AutoConfigurationImportSelector 的 selectImports() 方法

四、查看 selectImports() 方法,發現其調用了 getAutoConfigurationEntry() 方法

五、查看 getAutoConfigurationEntry() 方法, 發現其調用了 getCandidateConfigurations() 方法

六、查看 getCandidateConfigurations() 方法

斷點調試,發現list對象configurations會有117個元素,這些元素就是Bean對象的全限定類名,通過對象的全限定類名將Bean初始化到IOC容器中

在斷言中,有一段提示信息"No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct."

找到 spring.factories 文件的位置

打開該文件,注意“\”的使用說明。列表中,就有我們熟悉 RestTemplateAutoConfiguration、EmbeddedWebServerFactoryCustomizerAutoConfiguration 等自動配置類

最后,打開一個EmbeddedWebServerFactoryCustomizerAutoConfiguration 看一看

小結:雖然由於@EnableAutoConfiguration 注解的使用,初始化了spring.factories文件列表中的配置類,但是這些配置類中,使用了Condition條件,必須滿足Condition條件,才能最終將Bean初始化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM