Spring Boot应用程序配置问题

时间:2018-11-09 21:59:05

标签: java spring spring-boot

我的应用程序具有以下结构

----
   | 
   |____SpringBootApplicationA
        |
        |
        |___module-1
        |___module-2

每个模块都有自己的配置,例如,模块1是与mysql通讯的库,它具有其配置(连接字符串,用户名,密码等)

现在,我想在模块1中以Java POJO的形式表示此配置。 application.yml和一个读取配置并设置值的bean。

例如

class Module1Config {

  private String key1;
  private String key2;

  // getters & setters
}

application.yml在模块1上

key1: val1
key2: val2

现在作为模块1的使用者,SpringBootApplicationA将收到模块1的配置,该配置是模块1的默认设置。

在用户端,它将具有这样的应用程序配置

someKey1: someVal1
someKey2: someVal2
module-1:
  key1: overrideVal1

当模块1的bean初始化时,我希望这些值被视为

key1: overrideVal1
key2: val2

如何配置spring boot遵守默认值并覆盖它们?


修改

class AppConfig {

  private String key1;
  private int key2;

  private Module1Config conf;

  // getters + setters

}

这是我的示例应用程序配置,如您所见,它具有一些特定于应用程序配置以及它是从其他模块中利用的其他配置。

我希望conf对象从module1中获取分配的默认值集,然后再将任何指定为替代的应用程序指定为

1 个答案:

答案 0 :(得分:4)

默认情况下,Spring Boot会加载application.yml文件 来自src / main / resources 您可以在其中声明另一个application.yml文件 根目录的config文件夹和来自的配置 config文件夹将覆盖src / main / resources中的配置

以相反的顺序搜索配置位置。默认情况下,配置的位置是classpath:/,classpath:/ config /,file:./,file:./ config /。产生的搜索顺序如下:

文件:./ config / 文件:。/ 类路径:/ config / 类路径:/

这是官方文档中的链接:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

我认为这很有帮助