需求背景
工作中經常遇到多模塊系統,有時在多模塊中,多個web項目依賴同一個公共服務模塊。
back-end-web-application
模塊都依賴 common-service
。
- common-service 中主要中包含數據庫服務,主要整合了 MyBatis-Plus,並包含數據庫CRUD業務;
- back-end-web-application 則是主要處理網絡頁面和存放html網頁;
此時,我比較傾向於把數據庫配置都放在 common-service
模塊里。
解決方案
我們只需要在common-service
中編寫配置文件以application-*.yml
的形式命名
然后,back-end-web-application
模塊的 application.yml 中配置:
spring:
profiles:
include: datasource, dev
注:千萬不要自己定義common-service
中配置文件的名字,只能以application-
開頭才會被springboot
掃描到,如果想自定義名,則需要自己實現掃描。
其他說明
如果在多個模塊中都有 application.yml
文件,則會只讀取有主啟動類中的yml文件,不會讀取其他模塊中的配置文件。
例如:在
A
模塊中有一個application.yml文件,在B模塊中有一個application.yml,如果啟動A
模塊中的主啟動類,則只會加載A
模塊中的application.yml文件,並不會加載B模塊中的application.yml文件。
已驗證通過————對打成 war 包的 SpringBoot 項目同樣有效!
Demo地址
https://gitee.com/kendoziyu/spring-boot-yaml-merge