Spring Boot 中的自動配置autoconfigure詳解
一、自動配置的原理
自動配置:從類路徑中,搜索相關(guān)的 jar,根據(jù) jar 的內(nèi)容,嘗試創(chuàng)建所需的對象。例如,如果有 MyBatis .jar,Spring Boot 會嘗試創(chuàng)建 DataSource(根據(jù)配置文件中的url,username,password)連接數(shù)據(jù)庫。還需要創(chuàng)建 SqlSessionFactory,Dao 接口的代理對象。這些內(nèi)容不需要開發(fā)人員寫一行代碼,就能使用 MyBatis 框架了。
- xxx.imports 文件是自動配置類列表。 ====> 說明有哪些自動配置類。
- xxxAutoConfiguration 是自動配置類。====> @EnableConfigurationProperties({xxxProperties.class}) 將指定的綁定Bean注入到容器中。
- xxxProperties 是綁定Bean。 ====> @ConfigurationProperties(prefix = “xxxx”) 說明該類是一個綁定Bean。
二、關(guān)鍵注解和類
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 {}; }
- 開啟自動配置。將spring和第三方庫中的對象創(chuàng)建好,注入到spring容器,避免寫XML,去掉樣例代碼。需要使用的對象,由框架提供
- @EnableAutoConfiguration 通常由 @SpringBootApplication 注解帶入。
2.@Import 注解
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface Import { Class<?>[] value(); }
@Import:導(dǎo)入類,注冊為Bean。@Import 相當(dāng)于 xml 文件中的 ??梢詫?dǎo)入@Configuration 的類,實(shí)現(xiàn)了 ImportSelector 接口的類,ImportBeanDefinitionRegister 接口的類。
3.AutoConfigurationImportSelector 類
- AutoConfigurationImportSelector 間接實(shí)現(xiàn)了 ImportSelector 接口,導(dǎo)入自動配置類。
- 自動配置從 jar 的指定文件讀取要加載的配置類列表(xxxx.imports 文件)。
4.@AutoConfiguration 注解
- 新的注解 @AutoConfiguration,用在自動配置類的上面。相當(dāng)于增強(qiáng)的 @Configuration,專注自動配置類。
- @AutoConfiguration 還支持通過 after、afterNames、before 和 benamemes 屬性進(jìn)行自動配置排序,決定多個自動配置類執(zhí)行的先后順序。
5.其他相關(guān)的注解和類
- @Configuration
- @ConfigurationProperties
- @EnableConfigurationProperties
- @ConditionalXXXXX 條件注解
到此這篇關(guān)于Spring Boot 中的自動配置autoconfigure的文章就介紹到這了,更多相關(guān)Spring Boot 自動配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java開發(fā)工具Eclipse使用技巧全局搜索和更替
這篇文章主要介紹了Java開發(fā)工具Eclipse使用技巧全局搜索和更替,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01Java數(shù)據(jù)結(jié)構(gòu)之復(fù)雜度篇
算法復(fù)雜度分為時間復(fù)雜度和空間復(fù)雜度。其作用:?時間復(fù)雜度是度量算法執(zhí)行的時間長短;而空間復(fù)雜度是度量算法所需存儲空間的大小2022-01-01Springboot實(shí)現(xiàn)添加本地模塊依賴方式
這篇文章主要介紹了Springboot實(shí)現(xiàn)添加本地模塊依賴方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼
這篇文章主要介紹了Java中zip的壓縮和解壓縮的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02