springboot多模塊中的共用配置文件詳解
springboot多模塊的共用配置文件
項目中遇到這樣的問題
公共模塊comm有些參數(shù)是配置文件里配置的,其他的應用依賴comm包,這樣一來每個應用都需要配置一個與comm相同的參數(shù)才行,否則啟動時,報錯。找不到配置參數(shù),無法解析的異常:

有沒有辦法實現(xiàn)這樣的需求
公共模塊comm,配置了參數(shù),應用A 依賴comm,如果A里配置了相同的參數(shù),則會覆蓋comm里設置的 參數(shù),如果A里沒設置,那就采用comm里的參數(shù)配置?
經過半個小時的測試,答案是肯定的:
1、架構草圖如圖所示:

2、application.yml:

3、經測試,dev也就是說上層的配置文件要放在后面
他會覆蓋前面的相同參數(shù),如果后面的配置文件里沒有配置,就采用commdev公共模塊的共用參數(shù)。
springboot多模塊下yml配置文件的加載
如果你的項目有多個模塊,比如,幾個項目要共用一個數(shù)據(jù)模塊(DataModule),API部分為一個模塊(APIModule)。如果要切換不同的環(huán)境,需要設置不同的數(shù)據(jù)庫地址,如果數(shù)據(jù)分布于多個數(shù)據(jù)源中,手動修改yml中的地址顯然不實際而且容易出錯,所以需要將不同的數(shù)據(jù)源放在不同的yml中,在編譯時修改一個yml中的配置即可
具體例子如下
APIModule下有application.yml,如果環(huán)境不同,本模塊的配置也需要有相應的區(qū)別,那么可以增加application-development.yml(開發(fā)環(huán)境)和application-product.yml(生產環(huán)境)。
要想加載其中的一個,就需要配置application.yml中的spring.profiles.active為development(配置文件以application-開頭)。然而,如果你的DataModule下的yml文件的命名規(guī)則與APIModule一樣的話,則會發(fā)現(xiàn)數(shù)據(jù)模塊配置的東西讀不到了。
此時必須將沖突的名稱改名,如:將Datamodule的yml文件改為application-datadevelopment.yml和application-dataproduct.yml并在APIModule的application.yml文件中的spring.profiles.active中增加datadevelopment,即可加載這兩個模塊的dev配置了。
同理,要修改為生產環(huán)境,spring.profiles.active則為product,dataproduct。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java?synchronized底層實現(xiàn)原理以及鎖優(yōu)化
Synchronized是Java中解決并發(fā)問題的一種最常用的方法,也是最簡單的一種方法,下面這篇文章主要給大家介紹了關于Java?synchronized底層實現(xiàn)原理以及鎖優(yōu)化的相關資料,需要的朋友可以參考下2022-02-02
SpringBoot配置Access-Control-Allow-Origin教程
文章介紹了三種配置Spring Boot跨域訪問的方法:1. 使用過濾器;2. 在WebConfig配置文件中設置;3. 通過注解配置,作者分享了個人經驗,并鼓勵讀者支持腳本之家2025-03-03
SpringBoot項目中同時操作多個數(shù)據(jù)庫的實現(xiàn)方法
在實際項目開發(fā)中可能存在需要同時操作兩個數(shù)據(jù)庫的場景,本文主要介紹了SpringBoot項目中同時操作多個數(shù)據(jù)庫的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
同時使用@LoadBalanced?@RefreshScope注解負載均衡失效分析
這篇文章主要為大家介紹了同時使用@LoadBalanced?@RefreshScope負載均衡失效問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02
SpringBoot?AOP?Redis實現(xiàn)延時雙刪功能實戰(zhàn)
本文主要介紹了SpringBoot?AOP?Redis實現(xiàn)延時雙刪功能實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08

