一尘不染

Spring Boot应用程序配置问题

spring-boot

我的申请结构如下

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

每个模块都有自己的配置,例如,module-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中获取分配的默认值集,然后将任何指定为覆盖的应用程序


阅读 308

收藏
2020-05-30

共1个答案

一尘不染

默认情况下,Spring Boot从src / main /
resources加载application.yml文件。您可以在根路径的config文件夹中声明另一个application.yml文件,而从config文件夹进行的配置将覆盖src
/ main / resources的配置。

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

文件:./ config /文件:./ classpath:/ config / classpath:/

这是官方文档的链接:

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

我认为这很有帮助

2020-05-30