最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、pom.xml文件

1.父依賴

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

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

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

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

2.啟動(dòng)器:

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

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

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

二、主程序:

剖析源碼注解:

 @SpringBootConfiguration: springboot的配置
 
        @configuration:spring配置類
 
        @Component:   說明這也是一個(gè)spring組件
 
@EnableAutoConfiguration:自動(dòng)配置
 
        @AutoConfigurationPackage:自動(dòng)配置包
            @Import(AutoConfigurationPackages.Registrar.class):自動(dòng)配置'包注冊'
        @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)入對應(yīng)的start,就有對應(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è)場景需要的所有組件!

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

相關(guān)文章

  • java如何用遞歸生成樹形結(jié)構(gòu)

    java如何用遞歸生成樹形結(jié)構(gòu)

    作者分享了自己在使用腳本之家資源進(jìn)行編程時(shí)的經(jīng)驗(yàn),包括準(zhǔn)備實(shí)體對象、測試數(shù)據(jù)、構(gòu)造樹形結(jié)構(gòu)遞歸函數(shù)、測試以及輸出結(jié)果等步驟,作者希望這些經(jīng)驗(yàn)?zāi)軐Υ蠹矣兴鶐椭?并鼓勵(lì)大家支持腳本之家
    2025-03-03
  • Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題

    Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題

    這篇文章主要介紹了Spring MVC文件上傳大小和類型限制以及超大文件上傳bug問題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • Java中BitMap(位圖)hutool版、IntMap、LongMap示例詳解

    Java中BitMap(位圖)hutool版、IntMap、LongMap示例詳解

    這篇文章主要給大家介紹了關(guān)于Java中BitMap(位圖)hutool版、IntMap、LongMap的相關(guān)資料,通過位運(yùn)算高效存儲(chǔ)和檢索整數(shù),相比于傳統(tǒng)數(shù)組,它們在內(nèi)存占用和性能上都有顯著優(yōu)勢,需要的朋友可以參考下
    2024-12-12
  • SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例

    SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例

    本文主要介紹了SpringBoot后端服務(wù)重定向的實(shí)現(xiàn)示例,通過重定向、路徑匹配、反向代理和直接調(diào)用Controller層接口等方法來實(shí)現(xiàn),感興趣的可以了解一下
    2025-01-01
  • Springboot優(yōu)化內(nèi)置服務(wù)器Tomcat優(yōu)化方式(underTow)

    Springboot優(yōu)化內(nèi)置服務(wù)器Tomcat優(yōu)化方式(underTow)

    本文詳細(xì)介紹了Spring Boot中Tomcat和Undertow服務(wù)器的配置和優(yōu)化,包括初始線程數(shù)、最大線程數(shù)、最小備用線程數(shù)、最大請求數(shù)等參數(shù)的優(yōu)化建議,以及在高并發(fā)場景下Undertow相對于Tomcat的優(yōu)勢
    2024-12-12
  • 舉例講解Java中的多線程編程

    舉例講解Java中的多線程編程

    這篇文章主要介紹了舉例講解Java中的多線程編程,線程是Java學(xué)習(xí)中的重要知識,需要的朋友可以參考下
    2015-09-09
  • Spring中@DependsOn注解的使用代碼實(shí)例

    Spring中@DependsOn注解的使用代碼實(shí)例

    這篇文章主要介紹了Spring中@DependsOn注解的使用代碼實(shí)例,Spring中@DependsOn,主要是使用在類和方法上, 作用是當(dāng)前對象要依賴另外一些對象,被依賴的對象會(huì)先注冊到Spring的IOC容器中,需要的朋友可以參考下
    2024-01-01
  • windows上nacos自啟動(dòng)的三種方法小結(jié)

    windows上nacos自啟動(dòng)的三種方法小結(jié)

    本文主要給大家介紹了windows上nacos自啟動(dòng)的三種方法,借助WinSW.exe添加到服務(wù)列表,修改nacos啟動(dòng)配置以及以開機(jī)"啟動(dòng)"方式——啟動(dòng)Nacos的startup.cmd這三種方法,文中通過圖文講解的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Spring容器刷新obtainFreshBeanFactory示例詳解

    Spring容器刷新obtainFreshBeanFactory示例詳解

    這篇文章主要為大家介紹了Spring容器刷新obtainFreshBeanFactory示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 為什么禁止在SpringBoot項(xiàng)目中使用@Autowired注解

    為什么禁止在SpringBoot項(xiàng)目中使用@Autowired注解

    寫代碼的時(shí)候突然發(fā)現(xiàn)?idea?在屬性注入的?@Autowired?注解上給出警告提示,spring?framework?4.0?以后開始出現(xiàn)的,spring?4.0?開始就不推薦使用屬性注入,改為推薦構(gòu)造器注入和?setter?注入,推薦的方法是使用基于構(gòu)造函數(shù)和基于setter的依賴注入
    2024-08-08

最新評論

外汇| 林芝县| 钦州市| 福州市| 平谷区| 浠水县| 晋宁县| 永年县| 五原县| 虹口区| 三门县| 资兴市| 耒阳市| 横峰县| 招远市| 阜宁县| 拉孜县| 二手房| 马尔康县| 灌南县| 天水市| 盐亭县| 浦城县| 宜宾市| 新源县| 成武县| 榆社县| 肥西县| 荆州市| 陆良县| 榆中县| 石泉县| 淳化县| 商都县| 斗六市| 东山县| 长岭县| 瑞金市| 武邑县| 建德市| 竹溪县|