Spring Boot 中的自動(dòng)配置autoconfigure詳解
一、自動(dòng)配置的原理
自動(dòng)配置:從類(lèi)路徑中,搜索相關(guān)的 jar,根據(jù) jar 的內(nèi)容,嘗試創(chuàng)建所需的對(duì)象。例如,如果有 MyBatis .jar,Spring Boot 會(huì)嘗試創(chuàng)建 DataSource(根據(jù)配置文件中的url,username,password)連接數(shù)據(jù)庫(kù)。還需要?jiǎng)?chuàng)建 SqlSessionFactory,Dao 接口的代理對(duì)象。這些內(nèi)容不需要開(kāi)發(fā)人員寫(xiě)一行代碼,就能使用 MyBatis 框架了。


- xxx.imports 文件是自動(dòng)配置類(lèi)列表。 ====> 說(shuō)明有哪些自動(dòng)配置類(lèi)。
- xxxAutoConfiguration 是自動(dòng)配置類(lèi)。====> @EnableConfigurationProperties({xxxProperties.class}) 將指定的綁定Bean注入到容器中。
- xxxProperties 是綁定Bean。 ====> @ConfigurationProperties(prefix = “xxxx”) 說(shuō)明該類(lèi)是一個(gè)綁定Bean。
二、關(guān)鍵注解和類(lèi)
1.@EnableAutoConfiguration 注解
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}- 開(kāi)啟自動(dòng)配置。將spring和第三方庫(kù)中的對(duì)象創(chuàng)建好,注入到spring容器,避免寫(xiě)XML,去掉樣例代碼。需要使用的對(duì)象,由框架提供
- @EnableAutoConfiguration 通常由 @SpringBootApplication 注解帶入。
2.@Import 注解
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Import {
Class<?>[] value();
}@Import:導(dǎo)入類(lèi),注冊(cè)為Bean。@Import 相當(dāng)于 xml 文件中的 ??梢詫?dǎo)入@Configuration 的類(lèi),實(shí)現(xiàn)了 ImportSelector 接口的類(lèi),ImportBeanDefinitionRegister 接口的類(lèi)。
3.AutoConfigurationImportSelector 類(lèi)
- AutoConfigurationImportSelector 間接實(shí)現(xiàn)了 ImportSelector 接口,導(dǎo)入自動(dòng)配置類(lèi)。
- 自動(dòng)配置從 jar 的指定文件讀取要加載的配置類(lèi)列表(xxxx.imports 文件)。



4.@AutoConfiguration 注解
- 新的注解 @AutoConfiguration,用在自動(dòng)配置類(lèi)的上面。相當(dāng)于增強(qiáng)的 @Configuration,專(zhuān)注自動(dòng)配置類(lèi)。
- @AutoConfiguration 還支持通過(guò) after、afterNames、before 和 benamemes 屬性進(jìn)行自動(dòng)配置排序,決定多個(gè)自動(dòng)配置類(lèi)執(zhí)行的先后順序。
5.其他相關(guān)的注解和類(lèi)
- @Configuration
- @ConfigurationProperties
- @EnableConfigurationProperties
- @ConditionalXXXXX 條件注解
到此這篇關(guān)于Spring Boot 中的自動(dòng)配置autoconfigure的文章就介紹到這了,更多相關(guān)Spring Boot 自動(dòng)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java請(qǐng)求Http接口OkHttp超詳細(xì)講解(附帶工具類(lèi))
這篇文章主要給大家介紹了關(guān)于Java請(qǐng)求Http接口OkHttp超詳細(xì)講解的相關(guān)資料,OkHttp是一款優(yōu)秀的HTTP客戶端框架,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
UrlDecoder和UrlEncoder使用詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了UrlDecoder和UrlEncoder使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
基于springboot 長(zhǎng)輪詢的實(shí)現(xiàn)操作
這篇文章主要介紹了基于springboot 長(zhǎng)輪詢的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
SpringCloud Eureka實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)
Eureka是一種基于REST(具像狀態(tài)傳輸)的服務(wù),主要用于AWS云中定位服務(wù),以實(shí)現(xiàn)中間層服務(wù)器的負(fù)載平衡和故障轉(zhuǎn)移。本文記錄一個(gè)簡(jiǎn)單的服務(wù)注冊(cè)與發(fā)現(xiàn)實(shí)例。感興趣的小伙伴們可以參考一下2019-01-01
SpringMVC攔截器的實(shí)現(xiàn)和作用及Redis登陸功能的優(yōu)化詳解
這篇文章主要介紹了Java項(xiàng)目SpringMVC攔截器+Redis優(yōu)化登錄功能實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-09-09
Java中的List接口實(shí)現(xiàn)類(lèi)解析
這篇文章主要介紹了Java中的List接口實(shí)現(xiàn)類(lèi)解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
SpringMVC自定義類(lèi)型轉(zhuǎn)換器實(shí)現(xiàn)解析
這篇文章主要介紹了SpringMVC自定義類(lèi)型轉(zhuǎn)換器實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
SpringBoot2 集成log4j2日志框架的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot2 集成log4j2日志框架的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10

