springboot啟動讀取外部配置文件實現(xiàn)方式
有時候,線上的服務(wù)器配置,只有運維人員知道,開發(fā)人員是不知道的。所以在 springboot項目中,如何解決運行時加載外部運維定義的(沒有被打包進jar文件)配置信息呢?
springboot啟動讀取外部配置文件
springboot 有讀取配置文件的方法,如下優(yōu)先級:
- 第一種是在jar包的同一目錄下建一個
config文件夾,然后把配置文件放到這個文件夾下,即./config/目錄下。./表示jar包所在目錄。 - 第二種是直接把配置文件放到
jar包的同級目錄,即./目錄下。 - 第三種在classpath下建一個config文件夾,然后把配置文件放進去。即
classpath:/config/目錄下。 - 第四種是在classpath下直接放配置文件。即
classpath:/目錄下。
知道這個就好辦了。
如下圖,在jar包文件下,新建config文件夾,同時將線上的配置信息放進去。

- config文件夾下內(nèi)容:

最后,在jar包下打開命令窗口,執(zhí)行如下命令就可以運行程序,并且 引用外部配置文件application.yml和application-prod.yml里面的內(nèi)容了。

特別關(guān)注
值得注意的是,我的將代碼打包時,也會有一份配置信息。

由于上面提到了,springboot 有讀取配置文件有優(yōu)先級次序。
所以,最后還是為讀取到打包進clathpath底下的配置文件application.yml。
那么問題又來了,如果外部配置文件,和clathpash的 配置文件,配置信息又相同的部分或是不同的部分,分別時怎么處理的呢?
遵循以下原則:
- 如果
內(nèi)配置文件里有外配置文件沒有的配置,那兩者互補。比如外配置文件沒有配置數(shù)據(jù)庫,內(nèi)配置文件里配置了數(shù)據(jù)庫,那內(nèi)配置文件的配置會被使用。 - 如果
內(nèi)配置文件里和外配置文件里都有相同的配置,比如兩者都配置了數(shù)據(jù)庫,但是兩個連接的不同,那外配置文件會覆蓋內(nèi)配置文件里的配置。
總結(jié)
總結(jié)起來就是一句話,內(nèi)外都有相同的配置信息時聽外的,內(nèi)外有不同的配置信息時都生效。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java使用分布式實現(xiàn)數(shù)據(jù)庫讀寫分離的示例代碼
在MySQL中可以通過配置主從復(fù)制來實現(xiàn)數(shù)據(jù)同步,本文主要介紹了Java使用分布式實現(xiàn)數(shù)據(jù)庫讀寫分離,具有一定的參考價值,感興趣的可以了解一下2024-07-07
學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法
本篇文章主要介紹了學(xué)習(xí)Spring-Session+Redis實現(xiàn)session共享的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
java開發(fā)AOP基礎(chǔ)JdkDynamicAopProxy
這篇文章主要為大家介紹了java開發(fā)AOP基礎(chǔ)JdkDynamicAopProxy源碼示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Spring?Security權(quán)限注解啟動及邏輯處理使用示例
這篇文章主要為大家介紹了Spring?Security權(quán)限注解啟動及邏輯處理使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

