SpringBoot创建maven多模块项目

目录
  1. 1. SymonLin/demo
  2. 2. SpringBoot多模块下yml文件读取问题

个人理解使用Maven把项目拆分成多个模块的好处:
比如一个项目,有H5和管理员后台,如果打包到一个jar里面,H5和管理员后台只能共用一个域名,而且修改任何地方的代码,这个都要重新部署。
想要避免这一情况,可以把H5和管理员后台拆分成两个独立项目。
但是这样出现了另一个问题:本来一些工具方法和查询订单等共用的功能模块,就得在H5和管理员后台分别创建一份,达不到共用的目的。
所以最优解就是使用Maven分模块开发。

SymonLin/demo

rex:测试可行

扩展阅读:
lxchinesszz/multi-boluome
Spring Boot -05- 多模块结构项目构建与测试(详细图文教程)IDEA 版
SpringBoot+Maven多模块项目(创建、依赖、打包可执行jar包部署测试)完整流程


SpringBoot多模块下yml文件读取问题

如果在多个模块中都有application.yml文件,则会只读取有主启动类中的yml文件,不会读取其他模块中的配置文件,例如:
在controller模块中有一个application.yml文件,在dao模块中有一个application.yml,如果启动controller模块中的主启动类,则只会加载controller模块中的application.yml文件,并不会加载dao模块中的application.yml文件。

解决方案:
第一步:修改其他模块中的yml文件的名字为application-xxx.yml(xxx必须和active的值保持一致
第二步:在主启动模块中的application.yml中配置如下内容

1
2
3
spring:
profiles:
active: xxx

实际操作:

  • 将 xinyue-service 的配置文件重命名为:application-service.yml
  • 在 xinyue-admin 的 application.yml 中启用指定配置文件:spring.profiles.active=service
  • 重启后,运行成功
  • 如果各个模块还需要做 dev/prod 环境的切换怎么办呢?
    • 亲测后,发现 spring.profiles.active 支持使用多配置文件
  • 故可以在 xinyue-admin 中有三个配置文件
    • application.yml
    • application-dev.yml
    • application-prod.yml
  • 也可以在 xinyue-service 中创建三个配置文件
    • application-service.yml
    • application-service-dev.yml
    • application-service-prod.yml
  • 然后再 application.yml 中根据情况配置,类似如下即可
    • spring.profiles.active=dev,service-dev

总结:
实际开发中,还是把所有配置放在同一个程序入口模块里比较好,方便统一管理。