溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

發(fā)布時(shí)間:2021-12-02 16:28:59 來源:億速云 閱讀:186 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何進(jìn)行SpringBoot自動(dòng)裝配原理分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

先看看SpringBoot的主配置類:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

里面有一個(gè)main方法運(yùn)行了一個(gè)run()方法,在run方法中必須要傳入一個(gè)被@SpringBootApplication注解的類。

@SpringBootApplication

SpringBoot應(yīng)用標(biāo)注在某個(gè)類上說明這個(gè)類是SpringBoot的主配置類,SpringBoot就會(huì)運(yùn)行這個(gè)類的main方法來啟動(dòng)SpringBoot項(xiàng)目。

那@SpringBootApplication注解到底是什么呢,點(diǎn)進(jìn)去看看:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

發(fā)現(xiàn)@SpringBootApplication是一個(gè)組合注解。

@SpringBootConfiguration

先看看@SpringBootConfiguration注解:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

這個(gè)注解很簡單,表明該類是一個(gè)Spring的配置類。

再進(jìn)去看看@Configuration:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

說明Spring的配置類也是Spring的一個(gè)組件。

@EnableAutoConfiguration

這個(gè)注解是開啟自動(dòng)配置的功能。

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

先看看@AutoConfigurationPackage注解:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

這個(gè)注解是自動(dòng)配置包,主要是使用的@Import來給Spring容器中導(dǎo)入一個(gè)組件 ,這里導(dǎo)入的是Registrar.class。

來看下這個(gè)Registrar:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

就是通過這個(gè)方法獲取掃描的包路徑,可以debug看看:

在這行代碼上打了一個(gè)斷點(diǎn):

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

啟動(dòng)項(xiàng)目:

進(jìn)入斷點(diǎn)處:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

看看能否獲取掃描的包路徑:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

已經(jīng)獲取到了包路徑:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

那那個(gè)metadata是什么呢:

可以看到是標(biāo)注在@SpringBootApplication注解上的DemosbApplication,也就是我們的主配置類:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

說白了就是將主配置類(即@SpringBootApplication標(biāo)注的類)的所在包及子包里面所有組件掃描加載到Spring容器。所以包名一定要注意。

現(xiàn)在包掃描路徑獲取到了,那具體加載哪些組件呢,看看下面這個(gè)注解。

@Import({AutoConfigurationImportSelector.class})

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

@Import注解就是給Spring容器中導(dǎo)入一些組件,這里傳入了一個(gè)組件的選擇器:AutoConfigurationImportSelector。

里面有一個(gè)selectImports方法,將所有需要導(dǎo)入的組件以全類名的方式返回;這些組件就會(huì)被添加到容器中。

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

debug運(yùn)行看看:

會(huì)給容器中導(dǎo)入非常多的自動(dòng)配置類(xxxAutoConfiguration);就是給容器中導(dǎo)入這個(gè)場景需要的所有組件,并配置好這些組件:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

有了自動(dòng)配置類,免去了我們手動(dòng)編寫配置注入功能組件等的工作。

那他是如何獲取到這些配置類的呢,看看上面這個(gè)方法:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

會(huì)從META-INF/spring.factories中獲取資源,然后通過Properties加載資源:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

Spring Boot在啟動(dòng)的時(shí)候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動(dòng)配置類導(dǎo)入到容器中,自動(dòng)配置類就生效,幫我們進(jìn)行自動(dòng)配置工作。以前我們需要自己配置的東西,自動(dòng)配置類都幫我們完成了。

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

J2EE的整體整合解決方案和自動(dòng)配置都在spring-boot-autoconfigure-2.0.3.RELEASE.jar:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

比如看看WebMvcAutoConfiguration:

都已經(jīng)幫我們配置好了,我們不用再單獨(dú)配置了:

如何進(jìn)行SpringBoot自動(dòng)裝配原理分析

上述內(nèi)容就是如何進(jìn)行SpringBoot自動(dòng)裝配原理分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI