前言:通過之前的自動配置原理相關介紹的文章,我們對自動配置的流程大概都很清楚了,這里我們對 @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 看一看

