欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java SpringBoot自動(dòng)裝配原理詳解及源碼注釋

 更新時(shí)間:2021年10月27日 08:40:37   作者:龍弟-idea  
SpringBoot的自動(dòng)裝配是拆箱即用的基礎(chǔ),也是微服務(wù)化的前提。其實(shí)它并不那么神秘,我在這之前已經(jīng)寫過(guò)最基本的實(shí)現(xiàn)了,大家可以參考這篇文章,來(lái)看看它是怎么樣實(shí)現(xiàn)的,我們透過(guò)源代碼來(lái)把握自動(dòng)裝配的來(lái)龍去脈

一、pom.xml文件

1.父依賴

主要是依賴一個(gè)父項(xiàng)目,管理項(xiàng)目的資源過(guò)濾以及插件!

資源過(guò)濾已經(jīng)配置好了,無(wú)需再自己配置

在pom.xml中有個(gè)父依賴:spring-boot-dependencies是SpringBoot的版本控制中心!

因?yàn)橛羞@些版本倉(cāng)庫(kù),我們?cè)趯懟蛘咭胍恍﹕pringboot依賴的時(shí)候,不需要指定版本!

2.啟動(dòng)器:

啟動(dòng)器也就是Springboot的啟動(dòng)場(chǎng)景;

比如spring-boot-starter-web,它就會(huì)幫我們自動(dòng)導(dǎo)入web環(huán)境所有的依賴!

springboot會(huì)將所有的功能場(chǎng)景,都變成一個(gè)個(gè)的starter(啟動(dòng)器)我們需要使用什么功能,只需找到相對(duì)應(yīng)的啟動(dòng)器即可!

二、主程序:

剖析源碼注解:

 @SpringBootConfiguration: springboot的配置
 
        @configuration:spring配置類
 
        @Component:   說(shuō)明這也是一個(gè)spring組件
 
@EnableAutoConfiguration:自動(dòng)配置
 
        @AutoConfigurationPackage:自動(dòng)配置包
            @Import(AutoConfigurationPackages.Registrar.class):自動(dòng)配置'包注冊(cè)'
        @Import(AutoConfigurationImportSelector.class):自動(dòng)配置導(dǎo)入選擇
//獲取所有的配置
List<String> configurations = getCandidateConfigurations(annotationMetadata,attributes);

獲取候選的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata,
  AnnotationAttributes attributes) {
  List<String> configurations = SpringFactoriesLoader.loadFactoryNames(
        getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader());
   Assert.notEmpty(configurations,
	 "No auto configuration classes found in META-INF/spring.factories. If you "
	+ "are using a custom packaging, make sure that file is correct.");
   return configurations;
}

META-INF/spring.factories:自動(dòng)配置的核心文件

自動(dòng)配置

Properties properties = PropertiesLoaderUtils.loadProperties(resource);
所有資源加載到配置類中!

所以,springboot所有自動(dòng)配置都是在啟動(dòng)的時(shí)候掃描并加載 spring.factories所有的自動(dòng)配置類都在這里面,但是不一定生效,要判斷條件是否成立,只要導(dǎo)入對(duì)應(yīng)的start,就有對(duì)應(yīng)的啟動(dòng)器了,有了啟動(dòng)器,我們自動(dòng)裝配就會(huì)生效,然后就配置成功!

三、結(jié)論:

1. springboot在啟動(dòng)的時(shí)候,從類路徑下/META-INF/ spring.factories獲取指定的值!
2.將這些自動(dòng)配置的類導(dǎo)入容器,自動(dòng)配置就會(huì)生效,幫我進(jìn)行自動(dòng)配置!
3.以前我們需要手動(dòng)配置的東西,現(xiàn)在springboot幫我們做了!
4.整合javaEE,解決方案和自動(dòng)配置的東西都在spring-boot-autoconfigure-2.1.4.RELEASE.jar這個(gè)包下!
5.它會(huì)把所有需要導(dǎo)入的組件,以類名的方式返回,這些組件就會(huì)被添加到容器!
6.容器中也會(huì)存在非常多的xxxAutoConfiguration的文件(@Bean),就是這些類給容器中導(dǎo)入了這個(gè)場(chǎng)景需要的所有組件!

到此這篇關(guān)于Java SpringBoot自動(dòng)裝配原理詳解及源碼注釋的文章就介紹到這了,更多相關(guān)Java SpringBoot 自動(dòng)裝配內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java 線程中斷

    詳解Java 線程中斷

    這篇文章主要介紹了Java 線程中斷的相關(guān)資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • 淺析Disruptor高性能線程消息傳遞并發(fā)框架

    淺析Disruptor高性能線程消息傳遞并發(fā)框架

    這篇文章主要為大家介紹了Disruptor高性能線程消息傳遞并發(fā)框架的簡(jiǎn)單分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • java自定義任務(wù)類定時(shí)執(zhí)行任務(wù)示例 callable和future接口使用方法

    java自定義任務(wù)類定時(shí)執(zhí)行任務(wù)示例 callable和future接口使用方法

    Callable是類似于Runnable的接口,實(shí)現(xiàn)Callable接口的類和實(shí)現(xiàn)Runnable的類都是可被其它線程執(zhí)行的任務(wù)
    2014-01-01
  • Java讀取數(shù)據(jù)庫(kù)表的示例代碼

    Java讀取數(shù)據(jù)庫(kù)表的示例代碼

    這篇文章主要介紹了Java讀取數(shù)據(jù)庫(kù)表,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • 使用HandlerMethodArgumentResolver用于統(tǒng)一獲取當(dāng)前登錄用戶

    使用HandlerMethodArgumentResolver用于統(tǒng)一獲取當(dāng)前登錄用戶

    這篇文章主要介紹了使用HandlerMethodArgumentResolver用于統(tǒng)一獲取當(dāng)前登錄用戶實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • java9學(xué)習(xí)筆記之模塊化詳解

    java9學(xué)習(xí)筆記之模塊化詳解

    Java 9中最重要的功能,毫無(wú)疑問(wèn)就是模塊化(Module),下面這篇文章主要給大家介紹了關(guān)于java9學(xué)習(xí)筆記之模塊化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2018-04-04
  • java tostring方法重寫代碼示例

    java tostring方法重寫代碼示例

    這篇文章主要介紹了java tostring方法重寫代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-10-10
  • Mybatis詳解動(dòng)態(tài)SQL以及單表多表查詢的應(yīng)用

    Mybatis詳解動(dòng)態(tài)SQL以及單表多表查詢的應(yīng)用

    MyBatis的動(dòng)態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語(yǔ)句中實(shí)現(xiàn)某些邏輯,下面這篇文章主要給大家介紹了關(guān)于Mybatis超級(jí)強(qiáng)大的動(dòng)態(tài)SQL語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Spring Web MVC框架學(xué)習(xí)之配置Spring Web MVC

    Spring Web MVC框架學(xué)習(xí)之配置Spring Web MVC

    這一篇文章講的是Spring Web MVC各部分的配置方法,包括Java代碼配置和XML文件配置以及MVC命名空間的使用方法。
    2017-03-03
  • Java數(shù)組的運(yùn)用詳解

    Java數(shù)組的運(yùn)用詳解

    這篇文章主要給大家介紹了關(guān)于Java中數(shù)組的定義和使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08

最新評(píng)論