SpringBoot配置文件的優(yōu)先級順序、加載順序、bootstrap.yml與application.yml區(qū)別及說明
Spring Boot 配置文件
優(yōu)先級順序
在 Spring Boot 中,配置文件的優(yōu)先級順序是:
application-{profile}.yml
(application-{profile}.properties
) > application.yml
(application.properties
) > bootstrap.yml
(bootstrap.properties
)。
其中,{profile}
表示不同的環(huán)境配置,如 dev
、test
、prod
等。
優(yōu)先級從高到低,高優(yōu)先級的配置覆蓋低優(yōu)先級的配置,所有的配置會形成互補配置。
加載順序
在 Spring Boot 中,配置文件的加載順序是按照以下規(guī)則:
- bootstrap.yml 或 bootstrap.properties: 這是最先加載的配置文件,用于配置應(yīng)用程序上下文的基礎(chǔ)設(shè)施,例如外部配置源和加密/解密。
- application.yml 或 application.properties: 這是主配置文件,包含應(yīng)用程序的常規(guī)配置。
- application-{profile}.yml 或 application-{profile}.properties: 針對不同的環(huán)境(profile)加載相應(yīng)的配置文件。例如,
application-dev.yml
用于開發(fā)環(huán)境,application-prod.yml
用于生產(chǎn)環(huán)境。
在加載配置文件時,Spring Boot 會按照上述順序依次查找并加載相應(yīng)的配置項。
當存在相同名稱的配置項時,
后加載的配置文件會覆蓋之前加載的相同鍵名的配置項。這種順序保證了較高優(yōu)先級的配置文件可以覆蓋較低優(yōu)先級的配置,實現(xiàn)了靈活的配置管理。
bootstrap.yml 和 application.yml 有什么區(qū)別?
bootstrap.yml
和 application.yml
都是 Spring Boot 項目中常用的配置文件。
它們之間的主要區(qū)別如下:
1.用途不同:
bootstrap.yml
文件主要用于配置 Spring Boot 應(yīng)用程序的啟動參數(shù),例如數(shù)據(jù)庫連接、服務(wù)器端口等。這些參數(shù)在應(yīng)用程序啟動時需要設(shè)置,因此將它們放在bootstrap.yml
文件中。application.yml
文件用于配置 Spring Boot 應(yīng)用程序的全局參數(shù),例如日志級別、緩存策略等。這些參數(shù)在應(yīng)用程序運行時可以更改,但一旦更改,所有使用這些參數(shù)的地方都會受到影響,因此將它們放在application.yml
文件中。
2.內(nèi)容不同:
bootstrap.yml
文件通常包含一些硬編碼的配置值,例如數(shù)據(jù)庫連接 URL、服務(wù)器端口等。這些值在應(yīng)用程序啟動時需要設(shè)置,因此將它們放在bootstrap.yml
文件中。application.yml
文件通常包含一些可配置的值,例如日志級別、緩存策略等。這些值在應(yīng)用程序運行時可以更改,但一旦更改,所有使用這些值的地方都會受到影響,因此將它們放在application.yml
文件中。
3.順序不同:
bootstrap.yml
文件在application.yml
文件之前加載,因此在application.yml
文件中定義的配置值會覆蓋bootstrap.yml
文件中相同的配置值。
總之,bootstrap.yml
文件主要用于配置應(yīng)用程序的啟動參數(shù),而 application.yml
文件用于配置應(yīng)用程序的全局參數(shù)。
在實際項目中,可以根據(jù)需要選擇使用哪個文件或者同時使用兩個文件。
Spring Boot 項目可能不會直接使用 bootstrap.yml,但是在 Spring Cloud 項目中會使用它來定義一些與 Spring Cloud 組件相關(guān)的額外配置,例如服務(wù)發(fā)現(xiàn)和配置服務(wù)器等。
實際應(yīng)用場景
在實際項目中,通常有一些推薦的最佳實踐,例如:
- 數(shù)據(jù)庫連接信息等啟動時必需的配置項可能放在
bootstrap.yml
。 - 應(yīng)用程序級別的配置項、日志級別、緩存策略等放在
application.yml
。
但是,有些項目也可能不用 bootstrap.yml
,而是采用 Nacos 配置中心或者命令行運行參數(shù)進行配置。
這種靈活性使得開發(fā)團隊能夠根據(jù)實際需求選擇最適合項目的配置方式,從而更好地適應(yīng)不同的環(huán)境和應(yīng)用場景。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解java.lang.reflect.Modifier.isInterface()方法
這篇文章主要介紹了詳解java.lang.reflect.Modifier.isInterface()方法的相關(guān)資料,這里提供實例幫助大家理解這個方法的使用,需要的朋友可以參考下2017-09-09Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例
本文主要介紹了Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03SpringSecurity在分布式環(huán)境下的使用流程分析
文章介紹了Spring?Security在分布式環(huán)境下的使用,包括單點登錄(SSO)的概念、流程圖以及JWT(JSON?Web?Token)的生成和校驗,通過使用JWT和RSA非對稱加密,可以實現(xiàn)安全的分布式認證,感興趣的朋友一起看看吧2025-02-02使用JWT創(chuàng)建解析令牌及RSA非對稱加密詳解
這篇文章主要介紹了JWT創(chuàng)建解析令牌及RSA非對稱加密詳解,JWT是JSON Web Token的縮寫,即JSON Web令牌,是一種自包含令牌,一種情況是webapi,類似之前的阿里云播放憑證的功能,另一種情況是多web服務(wù)器下實現(xiàn)無狀態(tài)分布式身份驗證,需要的朋友可以參考下2023-11-11