SpringBoot 自帶的自動配置原理
一 啟動類自動掃包范圍注解
@SpringBootApplication \ @EnableAutoConfiguration \ @ComponentScan
1.@EnableAutoConfiguration:掃包范圍默認當前類。
2.@ComponentScan(" ") 掃包范圍默認當前類所在的整個包下面所有類。
掃包范圍大於@EnableAutoConfiguration,@ComponentScan(" ")依賴於@EnableAutoConfiguration啟動程序。
@EnableAutoConfiguration
@ComponentScan("第三方包 ")
app.run()
4.@SpringBootApplication 掃包范圍同級包和當前包。
@SpringBootApplication 底層等同於@EnableAutoConfiguration+@ComponentScan。不掃描第三方包
例子:
@SpringBootApplication
@ComponentScan("第三方包 ")
app.run()
SpringBoot 自動配置類
-
自動配置原理:
a SpringBoot 啟動的時候自動加載主配置類,開啟自動配置功能 @EnableAutoConfiguration
b @EnableAutoConfiguration作用:@EnableAutoConfiguration 簡單概括一下就是,借助@Import的支持,收集和注冊特定場景相關的bean定義。 @EnableScheduling是通過@Import將Spring調度框架相關的bean定義都加載到IoC容器。 @EnableMBeanExport是通過@Import將JMX相關的bean定義加載到IoC容器。 而@EnableAutoConfiguration也是借助@Import的幫助,將所有符合自動配置條件的bean定義加載到IoC容器  最關鍵的要屬@Import(AutoConfigurationImportSelector.class), 利用AutoConfigurationImportSelector給容器導入一些組件 可以查看selectImports()方法的內容; List configurations = getCabdidateConfigurations(annotationMetadata, attributes)獲取候選的配置 SpringFactoriesLoader.loadFactoryNames() 掃描所有jar 包類路徑下, META-INF/spring.factories 把掃描到的這些文件的內容包裝成properties 對象 從properties獲取到的EnableAutoConfiguration.class 類(類名)對應的值,然后把他們添加在容器中 將類路徑下 META-INF/spring.factories 里面配置的所有EnableAutoConfiguration的值加入到容器中
org.springframework.boot.autoconfigure.EnableAutoConfiguration:
org.springframework.boot.autoconfigure.xxx