亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java SpringBoot自動裝配原理詳解及源碼注釋

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

一、pom.xml文件

1.父依賴

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

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

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

因?yàn)橛羞@些版本倉庫,我們在寫或者引入一些springboot依賴的時候,不需要指定版本!

2.啟動器:

啟動器也就是Springboot的啟動場景;

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

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

二、主程序:

剖析源碼注解:

 @SpringBootConfiguration: springboot的配置
 
        @configuration:spring配置類
 
        @Component:   說明這也是一個spring組件
 
@EnableAutoConfiguration:自動配置
 
        @AutoConfigurationPackage:自動配置包
            @Import(AutoConfigurationPackages.Registrar.class):自動配置'包注冊'
        @Import(AutoConfigurationImportSelector.class):自動配置導(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:自動配置的核心文件

自動配置

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

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

三、結(jié)論:

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

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

相關(guān)文章

  • 詳解Java 線程中斷

    詳解Java 線程中斷

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

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

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

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

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

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

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

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

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

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

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

    java tostring方法重寫代碼示例

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

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

    MyBatis的動態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語句中實(shí)現(xiàn)某些邏輯,下面這篇文章主要給大家介紹了關(guān)于Mybatis超級強(qiáng)大的動態(tài)SQL語句的相關(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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08

最新評論