成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringBoot 這兩個配置文件有什么區(qū)別?

開發(fā) 前端
?本文講解了關(guān)于 SpringBoot 自動裝配的兩個配置文件spring.factories? 和 spring-autoconfigure-metadata.properties有什么區(qū)別?

?本文講解了關(guān)于 SpringBoot 自動裝配的兩個配置文件spring.factories? 和 spring-autoconfigure-metadata.properties有什么區(qū)別?

??讀過上一片文章你可能會發(fā)現(xiàn),在自動裝配相關(guān)源碼閱讀的過程中涉及到了兩個配置文件 spring.factories? 和 spring-autoconfigure-metadata.properties,如果查看過內(nèi)容,你會覺得他們非常相似。

那么 spring.factories? 和 spring-autoconfigure-metadata.properties有什么區(qū)別呢?

圖片

spring.factories

“約定大于配置”在 Springboot 是一個很重要的思想,有一個約定就是 SpringBoot 啟動的時候會加載 META-INF/spring.factories 配置文件。在 spring.factories 文件中,配置都是按照 Key-Value 形式保存的,Key 是需要解析類的全路徑名,Value 是一個或多個類的全路徑名,用逗號分隔,并且 spring.factories 文件可能有多個。Spring Boot 自動裝配解析的核心配置文件就是它。

以 Feign 舉例:

# spring.factories 文件
org.springframework.boot.autoconfigure.EnableAutoCnotallow=\
org.springframework.cloud.openfeign.ribbon.FeignRibbonClientAutoConfiguration,\
org.springframework.cloud.openfeign.FeignAutoConfiguration,\
org.springframework.cloud.openfeign.encoding.FeignAcceptGzipEncodingAutoConfiguration,\
org.springframework.cloud.openfeign.encoding.FeignContentGzipEncodingAutoConfiguration

spring-autoconfigure-metadata.properties

spring.factories 和 spring-autoconfigure-metadata.properties 類似,都是位于 META-INF 目錄下的文件,并且都是 Key-Value 形式保存數(shù)據(jù)。不同的是 ,后者的 Key 的格式為 類的全路徑名.自動裝配條件?,Value 為 類的全路徑名,使用逗號分隔。它管理的是 Bean 的裝配條件。

假設(shè)有兩個類需要自動裝配,但是有裝配的順序要求,這就無法僅僅依靠 spring.factories 來實現(xiàn),于是有了 spring-autoconfigure-metadata.properties,他的 Key 后面追加名字就代表了對應(yīng)的裝配條件。

以 Feign 的配置文件舉例:

org.springframework.cloud.openfeign.encoding.FeignAcceptGzipEncodingAutoConfiguration.AutoCnotallow=org.springframework.cloud.openfeign.FeignAutoConfiguration

上面這段配置就代表 FeignAcceptGzipEncodingAutoConfiguration 必須在 FeignAutoConfiguration 裝配之后再裝配。

如何生成 spring-autoconfigure-metadata.properties

如果你閱讀過源碼,可能會發(fā)現(xiàn)源碼文件中并沒有找到 spring-autoconfigure-metadata.properties 文件,但是編譯好的包中卻有,這是怎么一回事呢?

因為它是自動生成的!

對于類路徑上的每個自動配置類,Spring Boot 必須計算 @ConditionalXXX 條件值,用于決定是否加載自動配置及其所需的所有類,根據(jù) Spring 啟動應(yīng)用程序中 starter 的數(shù)量,這可能會花費很多時間,為了提升啟動時間,我們需要在 pom.xml 中添加一個依賴:

<dependency>  
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<optional>true</optional>
</dependency>

這樣它會解析各種 condition,生成 spring-autoconfigure-metadata.properties 文件。這樣,Spring Boot 在啟動期間讀取這些元數(shù)據(jù),可以過濾出不滿足條件的配置,而不必實際檢查這些類,提升啟動速度。

總結(jié)

spring.factories :用于配置哪些 Bean 進行自動裝配。

spring-autoconfigure-metadata.properties :控制 Bean 裝配的條件信息,自動生成。

責任編輯:武曉燕 來源: 后端開發(fā)技術(shù)
相關(guān)推薦

2019-04-02 10:50:05

框架Spring開發(fā)

2020-12-10 10:32:33

區(qū)塊鏈比特幣數(shù)字貨幣

2019-09-26 06:27:59

FTPSFTPTCP

2021-02-07 17:27:29

屬性DOM元素

2023-09-15 11:26:16

2021-06-30 21:20:21

Python變量閉包

2020-12-22 13:46:48

APISKD

2011-08-08 14:09:55

dhcpbootp

2024-05-27 00:40:00

2022-02-27 15:33:22

安全CASBSASE

2022-09-13 10:23:52

MLOpsDevOps開發(fā)

2021-12-17 14:40:02

while(1)for(;;)語言

2021-05-16 14:26:08

RPAIPACIO

2020-09-25 08:19:51

SecOps vs D

2024-03-05 18:59:59

前端開發(fā)localhost

2024-09-09 13:10:14

2022-08-02 08:23:37

SessionCookies

2022-02-21 23:08:50

Kubernetes集群容器

2018-07-13 17:05:22

SQLMySQL數(shù)據(jù)庫

2020-03-09 20:56:19

LoRaLoRaWAN無線技術(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产在线观看一区二区三区 | 国产精品日韩一区二区 | 羞羞的视频网站 | 国产欧美精品一区二区 | 国产高清一区二区三区 | 日韩免费 | 人人草天天草 | 国产精品无码专区在线观看 | 久草在线在线精品观看 | 91就要激情 | 欧美xxxx网站| 免费av观看 | 久久99精品久久久久婷婷 | 国产精品美女久久久久久免费 | 国产一区免费视频 | 久久久久无码国产精品一区 | 久久精品国产免费 | 久久91av | 国产精品精品 | 一区二区三区在线观看视频 | 欧美精品在欧美一区二区 | 日韩无 | 亚洲成人一区 | 国产精品久久久久久久久久 | 亚洲视频在线看 | 国产精品国产成人国产三级 | 精品欧美色视频网站在线观看 | 国产一区2区 | 国产精品不卡视频 | 97热在线 | 国产超碰人人爽人人做人人爱 | 久久久免费精品 | 99久久婷婷国产综合精品电影 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品国产一区 | 日本黄色高清视频 | 精品国产视频 | 成人av一区二区三区 | 日韩一 | 精品1区2区3区 | 国产精品日韩 |