SpringBoot中的@EnableAutoConfiguration注解解析
SpringBoot中的@EnableAutoConfiguration注解
借助@Import的支持,收集和注冊(cè)特定場(chǎng)景相關(guān)的bean定義。
@EnableAutoConfiguration也是借助@Import的幫助,將所有符合自動(dòng)配置條件的bean定義注冊(cè)到IoC容器,僅此而已!
@EnableAutoConfiguration會(huì)根據(jù)類路徑中的jar依賴為項(xiàng)目進(jìn)行自動(dòng)配置,如:添加了spring-boot-starter-web依賴,會(huì)自動(dòng)添加Tomcat和Spring MVC的依賴,Spring Boot會(huì)對(duì)Tomcat和Spring MVC進(jìn)行自動(dòng)配置。
@EnableAutoConfiguration作為一個(gè)復(fù)合Annotation,其自身定義關(guān)鍵信息如下:
@SuppressWarnings("deprecation")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
...
}最關(guān)鍵的要屬@Import(EnableAutoConfigurationImportSelector.class),借助EnableAutoConfigurationImportSelector,@EnableAutoConfiguration可以幫助SpringBoot應(yīng)用將所有符合條件的@Configuration配置都加載到當(dāng)前SpringBoot創(chuàng)建并使用的IoC容器。
就像一只“八爪魚”一樣,借助于Spring框架原有的一個(gè)工具類:SpringFactoriesLoader的支持,@EnableAutoConfiguration可以智能的自動(dòng)配置功效才得以大功告成!

SpringFactoriesLoader屬于Spring框架私有的一種擴(kuò)展方案,其主要功能就是從指定的配置文件META-INF/spring.factories加載配置。
從classpath中搜尋所有的META-INF/spring.factories配置文件,并將其中org.springframework.boot.autoconfigure.EnableAutoConfiguration對(duì)應(yīng)的配置項(xiàng)通過反射(Java Refletion)實(shí)例化為對(duì)應(yīng)的標(biāo)注了@Configuration的JavaConfig形式的IoC容器配置類,然后匯總為一個(gè)并加載到IoC容器。
到此這篇關(guān)于SpringBoot中的@EnableAutoConfiguration注解解析的文章就介紹到這了,更多相關(guān)@EnableAutoConfiguration注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot自動(dòng)配置@EnableAutoConfiguration過程示例
- Springboot注解之@EnableAutoConfiguration詳解
- SpringBoot中@EnableAutoConfiguration和@Configuration的區(qū)別
- SpringBoot中@EnableAutoConfiguration注解源碼分析
- SpringBoot使用@EnableAutoConfiguration實(shí)現(xiàn)自動(dòng)配置詳解
- 解析SpringBoot @EnableAutoConfiguration的使用
- SpringBoot中@EnableAutoConfiguration注解的實(shí)現(xiàn)
相關(guān)文章
Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解詳析
編譯時(shí)注解相信對(duì)每一個(gè)java開發(fā)者來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于Java注解處理器學(xué)習(xí)之編譯時(shí)處理的注解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧2018-05-05
Java 微信公眾號(hào)開發(fā)相關(guān)總結(jié)
公眾號(hào)作為主流的自媒體平臺(tái),有著不少人使用。這次以文本回復(fù)作為案例來講解Java相關(guān)的微信公眾號(hào)開發(fā)2021-05-05
Java中null相關(guān)注解的實(shí)現(xiàn)
本文主要介紹了Java中null相關(guān)注解的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Java使用WatchService監(jiān)控文件內(nèi)容變化的示例
本篇文章主要介紹了Java使用WatchService監(jiān)控文件變化的示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-10-10
只用400行Java代碼就能實(shí)現(xiàn)的飛翔的小鳥游戲
今天給大家?guī)淼氖顷P(guān)于Java實(shí)戰(zhàn)的相關(guān)知識(shí),文章圍繞著只用400行Java代碼就能實(shí)現(xiàn)的飛翔的小鳥游戲展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
如何使用mybatis-plus實(shí)現(xiàn)分頁查詢功能
最近在研究mybatis,然后就去找簡(jiǎn)化mybatis開發(fā)的工具,發(fā)現(xiàn)就有通用Mapper和mybatis-plus兩個(gè)比較好的可是使用,可是經(jīng)過對(duì)比發(fā)現(xiàn)還是mybatis-plus比較好,下面這篇文章主要給大家介紹了關(guān)于如何使用mybatis-plus實(shí)現(xiàn)分頁查詢功能的相關(guān)資料,需要的朋友可以參考下2022-06-06
Spring如何基于aop實(shí)現(xiàn)操作日志功能
這篇文章主要介紹了Spring如何基于aop實(shí)現(xiàn)操作日志功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
PowerJob的OmsLogHandler工作流程源碼解析
這篇文章主要為大家介紹了PowerJob的OmsLogHandler工作流程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12

