SpringBoot 啟動自動掃描配置原理


                             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 自動配置類

  1. 自動配置原理:
    a SpringBoot 啟動的時候自動加載主配置類,開啟自動配置功能 @EnableAutoConfiguration
    b @EnableAutoConfiguration作用:

           @EnableAutoConfiguration 簡單概括一下就是,借助@Import的支持,收集和注冊特定場景相關的bean定義。
    
           @EnableScheduling是通過@Import將Spring調度框架相關的bean定義都加載到IoC容器。
           @EnableMBeanExport是通過@Import將JMX相關的bean定義加載到IoC容器。
           而@EnableAutoConfiguration也是借助@Import的幫助,將所有符合自動配置條件的bean定義加載到IoC容器
           ![](https://img2022.cnblogs.com/blog/1823155/202203/1823155-20220305201600222-1021504445.png)
     最關鍵的要屬@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


免責聲明!

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



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