Spring Boot項(xiàng)目如何使用外部application.yml配置文件啟動(dòng)JAR包
Spring Boot項(xiàng)目中使用外部application.yml配置文件啟動(dòng)JAR包
一、基本原理
Spring Boot默認(rèn)會(huì)加載項(xiàng)目內(nèi)部的application.yml
或application.properties
文件。但如果我們希望使用外部配置文件,可以通過設(shè)置spring.config.location
屬性來指定外部配置文件的路徑。這種方式允許配置文件獨(dú)立于JAR包存在,便于修改和部署。
二、具體操作步驟
1. 準(zhǔn)備外部配置文件
將application.yml
文件放置在項(xiàng)目外部,例如放在以下路徑:
/opt/config/application.yml
D:\config\application.yml
確保該文件包含你需要的配置內(nèi)容,例如:
spring: datasource: url: jdbc:mysql://localhost:3306/test_db username: root password: secret server: port: 8080
2. 打包項(xiàng)目為JAR文件
在項(xiàng)目根目錄下,使用Maven或Gradle打包項(xiàng)目,確保JAR包內(nèi)不包含application.yml
文件。例如,使用Maven:
mvn clean package -DskipTests
3. 啟動(dòng)JAR包并指定外部配置文件
使用以下命令啟動(dòng)JAR包,并指定外部配置文件的路徑:
java -jar your-app.jar --spring.config.location=file:/opt/config/application.yml
或者,如果配置文件位于Windows系統(tǒng)的某個(gè)路徑:
java -jar your-app.jar --spring.config.location=file:D:\config\application.yml
4. 驗(yàn)證配置是否生效
啟動(dòng)后,可以通過日志或應(yīng)用程序中的配置項(xiàng)檢查外部配置文件是否被正確加載。例如,檢查數(shù)據(jù)庫連接是否使用了外部配置文件中的URL和用戶名。
三、注意事項(xiàng)
- 優(yōu)先級問題:
- 使用
--spring.config.location
指定外部配置文件后,Spring Boot將不再加載JAR包內(nèi)部的默認(rèn)配置文件。 - 如果需要同時(shí)加載JAR包內(nèi)部的默認(rèn)配置文件和外部配置文件,可以使用
--spring.config.additional-location
參數(shù):java -jar your-app.jar --spring.config.additional-location=file:/opt/config/application.yml
- 使用
- 路徑格式:
- 確保路徑格式正確,例如在Linux系統(tǒng)下使用正斜杠(
/
),在Windows系統(tǒng)下使用反斜杠(\
)或正斜杠(/
)。 - 如果路徑中包含空格,需要用引號包裹:
java -jar your-app.jar --spring.config.location="file:/opt/my config/application.yml"
- 確保路徑格式正確,例如在Linux系統(tǒng)下使用正斜杠(
- 權(quán)限問題:
- 確保啟動(dòng)JAR包的用戶對配置文件路徑有讀取權(quán)限,否則可能導(dǎo)致配置文件無法加載。
- 配置沖突:
- 如果外部配置文件和JAR包內(nèi)部的配置文件存在相同的配置項(xiàng),外部配置文件的配置會(huì)覆蓋內(nèi)部的配置。
- 測試配置:
- 建議在正式使用前,先手動(dòng)測試啟動(dòng)命令,確保配置文件被正確加載且應(yīng)用程序按預(yù)期運(yùn)行。
四、示例
假設(shè)你有一個(gè)Spring Boot項(xiàng)目,打包后生成的JAR文件名為myapp.jar
,并希望使用外部配置文件/opt/config/application.yml
啟動(dòng)。啟動(dòng)命令如下:
java -jar myapp.jar --spring.config.location=file:/opt/config/application.yml
如果外部配置文件位于Windows系統(tǒng)的D:\config\application.yml
,則命令為:
java -jar myapp.jar --spring.config.location=file:D:\config\application.yml
到此這篇關(guān)于Spring Boot項(xiàng)目中使用外部application.yml配置文件啟動(dòng)JAR包的文章就介紹到這了,更多相關(guān)springboot application.yml配置文件啟動(dòng)jar包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot的配置文件application.yml及加載順序詳解
- 解決SpringBoot配置文件application.yml遇到的坑
- Springboot如何獲取配置文件application.yml中自定義的變量并使用
- SpringBoot讀取properties或者application.yml配置文件中的數(shù)據(jù)
- 詳解springboot啟動(dòng)時(shí)是如何加載配置文件application.yml文件
- Springboot為什么加載不上application.yml的配置文件
- springboot如何讀取配置文件(application.yml)中的屬性值
- springboot項(xiàng)目(jar包)指定配置文件啟動(dòng)圖文教程
- springboot jar包外置配置文件的解決方法
相關(guān)文章
利用MyBatis進(jìn)行不同條件的like模糊查詢的方法
這篇文章主要介紹了利用MyBatis進(jìn)行不同條件的like模糊查詢,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08java實(shí)現(xiàn)哈弗曼編碼與反編碼實(shí)例分享(哈弗曼算法)
本文介紹java實(shí)現(xiàn)哈弗曼編碼與反編碼實(shí)例,大家參考使用吧2014-01-01Spring?Security放行的接口Knife4j靜態(tài)資源的問題小結(jié)
這篇文章主要介紹了Spring?Security使用Knife4j靜態(tài)資源的問題小結(jié),項(xiàng)目中使用?Spring?Security?做身份認(rèn)證和授權(quán),使用?Knife4j?做接口調(diào)試,需要?Spring?Security?放行的接口記錄在?RequestMatcherConstant?類中,感興趣的朋友跟隨小編一起看看吧2024-02-02Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解
順序表是計(jì)算機(jī)內(nèi)存中以數(shù)組的形式保存的線性表,線性表的順序存儲(chǔ)是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的各個(gè)元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在相鄰的物理存儲(chǔ)單元中,即通過數(shù)據(jù)元素物理存儲(chǔ)的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系2021-10-10Java如何實(shí)現(xiàn)一個(gè)簡化版的Stream框架
這篇文章主要為大家詳細(xì)介紹了一個(gè)簡化版的 Stream 實(shí)現(xiàn),展示了如何通過延遲執(zhí)行來處理數(shù)據(jù)流,感興趣的小伙伴可以跟隨小編一學(xué)習(xí)一下2024-10-10Dubbo?retries?超時(shí)重試機(jī)制的問題原因分析及解決方案
這篇文章主要介紹了Dubbo?retries?超時(shí)重試機(jī)制的問題,解決方案是通過修改dubbo服務(wù)提供方,將timeout超時(shí)設(shè)為20000ms或者設(shè)置retries=“0”,禁用超時(shí)重試機(jī)制,感興趣的朋友跟隨小編一起看看吧2022-04-04