springboot多模塊中的共用配置文件詳解
springboot多模塊的共用配置文件
項目中遇到這樣的問題
公共模塊comm有些參數是配置文件裡配置的,其他的應用依賴comm包,這樣一來每個應用都需要配置一個與comm相同的參數才行,否則啟動時,報錯。找不到配置參數,無法解析的異常:
有沒有辦法實現這樣的需求
公共模塊comm,配置瞭參數,應用A 依賴comm,如果A裡配置瞭相同的參數,則會覆蓋comm裡設置的 參數,如果A裡沒設置,那就采用comm裡的參數配置?
經過半個小時的測試,答案是肯定的:
1、架構草圖如圖所示:
2、application.yml:
3、經測試,dev也就是說上層的配置文件要放在後面
他會覆蓋前面的相同參數,如果後面的配置文件裡沒有配置,就采用commdev公共模塊的共用參數。
springboot多模塊下yml配置文件的加載
如果你的項目有多個模塊,比如,幾個項目要共用一個數據模塊(DataModule),API部分為一個模塊(APIModule)。如果要切換不同的環境,需要設置不同的數據庫地址,如果數據分佈於多個數據源中,手動修改yml中的地址顯然不實際而且容易出錯,所以需要將不同的數據源放在不同的yml中,在編譯時修改一個yml中的配置即可
具體例子如下
APIModule下有application.yml,如果環境不同,本模塊的配置也需要有相應的區別,那麼可以增加application-development.yml(開發環境)和application-product.yml(生產環境)。
要想加載其中的一個,就需要配置application.yml中的spring.profiles.active為development(配置文件以application-開頭)。然而,如果你的DataModule下的yml文件的命名規則與APIModule一樣的話,則會發現數據模塊配置的東西讀不到瞭。
此時必須將沖突的名稱改名,如:將Datamodule的yml文件改為application-datadevelopment.yml和application-dataproduct.yml並在APIModule的application.yml文件中的spring.profiles.active中增加datadevelopment,即可加載這兩個模塊的dev配置瞭。
同理,要修改為生產環境,spring.profiles.active則為product,dataproduct。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- 教你在SpringBoot中管理多環境配置文件
- SpringBoot實現配置文件的替換
- Maven的porfile與SpringBoot的profile結合使用案例詳解
- SpringBoot框架配置文件路徑設置方式
- Springboot多環境開發及使用方法