SpringBoot自動裝配原理及分析
SpringBoot的自動裝配原理
要從主啟動類上的 @SpringBootApplication 注解開始
1. @SpringBootApplication 注解 是一個(gè)組合注解

2. 其中自動裝配的最核心
就在 @EnableAutoConfiguration 這個(gè)注解中,@EnableAutoConfiguration 注解 也是一個(gè)組合注解它組合了

其中 @AutoConfigurationPackage 注解 的作用是將主類所在的包以及子包自動注冊為 Spring 的組件掃描路徑,這 也就是你為什么 @Component、@Service、@Controller 等注解的類能被自動發(fā)現(xiàn)的原因。
在 @EnableAutoConfiguration 注解
有一個(gè)非常重要的注解 @Import(AutoConfigurationImportSelect)
1. 它導(dǎo)入了 AutoConfigurationImportSelect 類
這個(gè)類來決定需要加載那些自動配置類。
在 AutoConfigurationImportSelect 類中

它是實(shí)現(xiàn)了 DeferredImportSelector 接口 ,DeferredImportSelector ?接口 又繼承了 ImportSelector ?接口。
在 AutoConfigurationImportSelect 類中 重寫了 selectImports 方法,這個(gè)方法經(jīng)過層層的調(diào)用,最后對讀取到 META-INF 目錄下的以.imports 后綴名結(jié)尾的文件(Boot 2.7 以前的版本讀取的是 spring.factories 文件),讀取到全類名后,會解析注冊條件,也就是 @Conditional 及其衍生注解把滿足注冊條件的 Bean 對象自動注入到 IOC 容器中。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
通過springboot+mybatis+druid配置動態(tài)數(shù)據(jù)源
這篇文章主要介紹了通過springboot+mybatis+druid配置動態(tài)數(shù)據(jù)源,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
Java 單向隊(duì)列及環(huán)形隊(duì)列的實(shí)現(xiàn)原理
本文主要介紹了Java 單向隊(duì)列及環(huán)形隊(duì)列的實(shí)現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10
Maven設(shè)置JDK版本的兩種方法實(shí)現(xiàn)
本文主要介紹了Maven設(shè)置JDK版本的兩種方法實(shí)現(xiàn),是通過Apache Maven Compiler Plugin插件實(shí)現(xiàn)的,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
SpringSecurity6.x多種登錄方式配置小結(jié)
SpringSecurity6.x變了很多寫法,本文就來介紹一下SpringSecurity6.x多種登錄方式配置小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Springboot繼承Keycloak實(shí)現(xiàn)單點(diǎn)登錄與退出功能
這篇文章主要介紹了Springboot繼承Keycloak實(shí)現(xiàn)單點(diǎn)登陸與退出,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-08-08
Spring如何基于注解顯式實(shí)現(xiàn)自動裝配
這篇文章主要介紹了Spring如何基于注解顯式實(shí)現(xiàn)自動裝配,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Spring MVC 關(guān)于controller的字符編碼問題
在使用springMVC框架構(gòu)建web應(yīng)用,客戶端常會請求字符串、整型、json等格式的數(shù)據(jù),通常使用@ResponseBody注解使 controller回應(yīng)相應(yīng)的數(shù)據(jù)而不是去渲染某個(gè)頁面。2017-03-03
Java使用Filter實(shí)現(xiàn)登錄驗(yàn)證
本文主要介紹了Java使用Filter實(shí)現(xiàn)登錄驗(yàn)證,Filter類似于門衛(wèi),你在進(jìn)入之前門衛(wèi)需要盤查你,身份合法進(jìn)入,身份不合法攔截,感興趣的可以了解一下2023-11-11

