部署springboot項(xiàng)目讀取外部配置文件實(shí)現(xiàn)過程
部署springboot項(xiàng)目讀取外部配置文件
我們在部署springboot項(xiàng)目的時候,經(jīng)常會遇到這樣的情況:
測試環(huán)境與生產(chǎn)環(huán)境的配置不一樣,這就導(dǎo)致每次部署的時候都要修改配置文件再打包,即使用了nacos進(jìn)行配置管理,但測試環(huán)境與生產(chǎn)環(huán)境的nacos部署的地方肯定不一樣,所以每次部署的時候還是需要修改配置文件里的nacos地址,這樣比較麻煩,有時候還可能會忘記修改。
經(jīng)過查資料了解到其實(shí)springboot可以讀取外部配置文件,即在springboot應(yīng)用啟動后,不直接使用jar包里面的配置文件,而是讀取某個目錄下的配置文件,然后進(jìn)行覆蓋,從而實(shí)現(xiàn)應(yīng)用與配置分離,這樣就不用每次部署都修改配置文件了。
官方文檔里的描述

從官方文檔里的描述可以知道:
SpringApplication讀取配置文件的方式有四種,并且是有優(yōu)先級的,所有方式下的配置文件都會被讀取,高優(yōu)先級的內(nèi)容會覆蓋低優(yōu)先級的內(nèi)容
四種讀取方式
如下:
- 1、在jar包的同一目錄下建一個config文件夾,然后把配置文件放到這個文件夾里
- 2、直接把配置文件放到j(luò)ar包的同級目錄
- 3、在classpath下建一個config文件夾,然后把配置文件放進(jìn)去
- 4、在classpath下直接放配置文件
項(xiàng)目被打成jar包后,配置文件會被放在BOOT-INF的classes目錄下:

這就是上面所說的第四種讀取方式,也是優(yōu)先級最低的讀取方式
綜上所述,我們可以使用第一、二種配置文件讀取方式來實(shí)現(xiàn)應(yīng)用與配置分離,我這里是用的第二種方式,將配置文件放到了jar包的同級目錄:

這樣當(dāng)項(xiàng)目啟動的時候,它就會去讀取這個配置文件,并且覆蓋掉jar包里的配置文件
如果想把配置文件放在任意目錄,那就需要在jar包的啟動命令里指定配置文件的路徑,
參數(shù)如下:
spring.config.location=xxx
完整配置示例如下:
nohup java -jar nms-alarm-manager.jar --spring.config.location=/home/my-config/bootstrap.yml &
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
spark中使用groupByKey進(jìn)行分組排序的示例代碼
這篇文章主要介紹了spark中使用groupByKey進(jìn)行分組排序的實(shí)例代碼,本文通過實(shí)例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
SpringBoot多模塊搭建的實(shí)現(xiàn)示例
多模塊開發(fā)是指將一個大型應(yīng)用程序拆分為多個模塊,本文主要介紹了SpringBoot多模塊搭建的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
擴(kuò)展Hibernate使用自定義數(shù)據(jù)庫連接池的方法
這篇文章主要介紹了擴(kuò)展Hibernate使用自定義數(shù)據(jù)庫連接池的方法,涉及Hibernate數(shù)據(jù)庫操作擴(kuò)展的相關(guān)技巧,需要的朋友可以參考下2016-03-03
SpringBoot使用AOP實(shí)現(xiàn)統(tǒng)計(jì)全局接口訪問次數(shù)詳解
這篇文章主要介紹了SpringBoot通過AOP實(shí)現(xiàn)對全局接口訪問次數(shù)的統(tǒng)計(jì),文章從相關(guān)問題展開全文內(nèi)容詳情,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-06-06
Intellij IDEA的一些調(diào)試技巧(小結(jié))
本篇文章主要介紹了Intellij IDEA的一些調(diào)試技巧(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
MybatisX-Generator不生成domain文件夾的問題及解決
在使用MybatisX-Generator生成數(shù)據(jù)庫表實(shí)體時,如果發(fā)現(xiàn)沒有生成domain文件夾以及User.java文件,是因?yàn)镸ybatisX版本更新,最新版需要在options里額外勾選model才能生成domain,勾選model并點(diǎn)擊finish后,成功生成domain文件夾及User.java文件2025-01-01
帶你走進(jìn)Maven的大門-最全Maven配置及集成idea工具總結(jié)
Maven項(xiàng)目對象模型(POM),是一個項(xiàng)目管理工具可以通過一小段描述信息來管理項(xiàng)目的構(gòu)建,報(bào)告和文檔的軟件.那我們想要在IDEA中使用Maven得進(jìn)行一些配置,接下來我們具體看一下是如何配置使用的,需要的朋友可以參考下2021-06-06
Java實(shí)現(xiàn)TCP和UDP協(xié)議詳解
這篇文章主要介紹了Java實(shí)現(xiàn)TCP和UDP協(xié)議詳解,TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)是兩種最常用的傳輸層協(xié)議,它們都用于在網(wǎng)絡(luò)上傳輸數(shù)據(jù),但是它們之間有很多不同之處,需要的朋友可以參考下2023-07-07

