SpringBoot配置文件拆分设计思路
需求背景
工作中经常遇到多模块系统,有时在多模块中,多个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