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

SpringBoot是如何實(shí)現(xiàn)自動(dòng)配置的你知道嗎

 更新時(shí)間:2021年08月26日 11:45:47   作者:小小本科生debug  
這篇文章主要介紹了詳解SpringBoot自動(dòng)配置原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

SpringBoot啟動(dòng)類(lèi):

@SpringBootApplication
public class CommunityApplication {
	public static void main(String[] args) {
		SpringApplication.run(CommunityApplication.class, args);
	}
}

進(jìn)入@SpringBootApplication源碼中:

在這里插入圖片描述

在這里插入圖片描述

AutoConfigurationImportSelector 類(lèi)的作用就是往 Spring 容器中導(dǎo)入組件,我們?cè)龠M(jìn)入這個(gè)類(lèi)的源碼,發(fā)現(xiàn)有這幾個(gè)方法:

在這里插入圖片描述

loadmetadata的方法是加載項(xiàng)目的基本配置數(shù)據(jù)信息。

getAutoConfigurationEntry方法則是實(shí)現(xiàn)自動(dòng)裝配的邏輯,繼續(xù)點(diǎn)進(jìn)去

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";

步驟如下:

1、首先注意到 selectImports 方法,這個(gè)方法用于給容器中導(dǎo)入組件,然后跳到 getAutoConfigurationEntry 方法,用于獲取自動(dòng)配置項(xiàng)。

2、再來(lái)進(jìn)入 getCandidateConfigurations 方法就是 獲取一個(gè)自動(dòng)配置 List ,這個(gè) List 就包含了所有的自動(dòng)配置的類(lèi)名 。

3、再進(jìn)入 SpringFactoriesLoader 類(lèi)的 loadFactoryNames 方法,跳轉(zhuǎn)到 loadSpringFactories 方法發(fā)現(xiàn) ClassLoader 類(lèi)加載器指定了一個(gè) FACTORIES_RESOURCE_LOCATION 常量。

4、然后利用 PropertiesLoaderUtils 把 ClassLoader 掃描到的這些文件的內(nèi)容包裝成 properties 對(duì)象,從 properties 中獲取到 EnableAutoConfiguration.class 類(lèi)(類(lèi)名)對(duì)應(yīng)的值,然后把他們添加在容器中。

打開(kāi)META-INF/spring.factories文件,EnableAutoConfiguration 有一個(gè) = 號(hào),= 號(hào)后面那一串就是這個(gè)項(xiàng)目需要用到的自動(dòng)配置類(lèi)。

在這里插入圖片描述

追溯完成?。。?/p>

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java字符串比較方法equals的空指針異常的解決

    Java字符串比較方法equals的空指針異常的解決

    這篇文章主要介紹了Java字符串比較方法equals的空指針異常的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java反射中java.beans包學(xué)習(xí)總結(jié)

    Java反射中java.beans包學(xué)習(xí)總結(jié)

    本篇文章通過(guò)學(xué)習(xí)Java反射中java.beans包,吧知識(shí)點(diǎn)做了總結(jié),并把相關(guān)內(nèi)容做了關(guān)聯(lián),對(duì)此有需要的朋友可以學(xué)習(xí)參考下。
    2018-02-02
  • IntelliJ IDEA 安裝及初次使用圖文教程(2020.3.2社區(qū)版)

    IntelliJ IDEA 安裝及初次使用圖文教程(2020.3.2社區(qū)版)

    這篇文章主要介紹了IntelliJ IDEA 安裝及初次使用(2020.3.2社區(qū)版),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • java實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼圖片

    java實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼圖片

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)隨機(jī)生成驗(yàn)證碼圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • maven 刪除下載失敗的包的方法

    maven 刪除下載失敗的包的方法

    本文介紹了當(dāng)Maven包報(bào)紅時(shí),使用刪除相關(guān)文件的方法來(lái)解決該問(wèn)題,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Springboot使用Spring Data JPA實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作

    Springboot使用Spring Data JPA實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作

    Spring Data JPA 是 Spring 基于 Spring Data 框架、在JPA 規(guī)范的基礎(chǔ)上開(kāi)發(fā)的一個(gè)框架,使用 Spring Data JPA 可以極大地簡(jiǎn)化JPA 的寫(xiě)法,本章我們將詳細(xì)介紹在Springboot中使用 Spring Data JPA 來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作
    2021-06-06
  • maven依賴(lài)包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings處理方法

    maven依賴(lài)包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bi

    這篇文章主要給大家介紹了關(guān)于maven依賴(lài)包沖突SLF4J:?Class?path?contains?multiple?SLF4J?bindings的處理方法,這個(gè)問(wèn)題通常是因?yàn)轫?xiàng)目中存在多個(gè)SLF4J的實(shí)現(xiàn)綁定(bindings)導(dǎo)致的沖突,需要的朋友可以參考下
    2024-02-02
  • mybatis plus實(shí)體類(lèi)中字段映射mysql中的json格式方式

    mybatis plus實(shí)體類(lèi)中字段映射mysql中的json格式方式

    這篇文章主要介紹了mybatis plus實(shí)體類(lèi)中字段映射mysql中的json格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring之Scope注解使用詳解

    Spring之Scope注解使用詳解

    spring的bean管理中,每個(gè)bean都有對(duì)應(yīng)的scope。在BeanDefinition中就已經(jīng)指定scope,默認(rèn)的RootBeanDefinition的scope是prototype類(lèi)型,使用@ComponentScan掃描出的BeanDefinition會(huì)指定是singleton,最常使用的也是singleton
    2023-02-02
  • Java動(dòng)態(tài)設(shè)置注解值及原理詳解

    Java動(dòng)態(tài)設(shè)置注解值及原理詳解

    這篇文章主要介紹了Java動(dòng)態(tài)設(shè)置注解值及原理詳解,AnnotationInvocationHandler是注解的代理hander,通過(guò)反射獲取類(lèi)的注解時(shí)會(huì)通過(guò)AnnotationInvocationHandler創(chuàng)建代理對(duì)象并將數(shù)據(jù)存儲(chǔ)到memberValues里,需要的朋友可以參考下
    2023-11-11

最新評(píng)論