JAVASpring其他

Spring Boot项目加载依赖多模块解析yml文件

工作中经常遇到多模块系统, 有时在多模块中,多个web项目依赖同一个服务模块.如下图

api和web模块都依赖了common. 此时是有两份配置文件, 更改了一些东西, 要同时改动两个配置文件.那么能不能在common中把工作的部分做好呢.答案是可以的。

我们只需要在common中编写配置文件以application-*.yml的形式命名, 然后再起点application.yml中配置

这样就可以正常的使用@value等注解取值了.

注:千万不要自己定义common中配置文件的名字,只能以application-开头才会被springboot扫描到,如果想自定义名,则需要自己实现扫描

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

解决方案:

  • 第一步:修改其他模块中的yml文件的名字为application-xxx.yml
  • 第二步:在主启动模块中的application.yml中配置如下内容
spring:
   profiles:
    active: xxx

即可解决springBoot中多模块配置文件中读取配置文件问题