Spring Boot应用程序配置问题

3
我有以下应用程序结构。
----
   | 
   |____SpringBootApplicationA
        |
        |
        |___module-1
        |___module-2

每个模块都有自己的配置,例如,module-1是与mysql通信的库,它有自己的配置(连接字符串、用户名、密码等)。
现在我想以Java POJO的形式表示这个配置在module-1中。使用application.yml和一个读取配置并设置值的bean。
例如:
class Module1Config {

  private String key1;
  private String key2;

  // getters & setters
}

application.yml at module-1

key1: val1
key2: val2

现在作为module-1的消费者,SpringBootApplicationA将会接收module-1的配置,这是由module-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个回答

6

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

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

file:./config/ file:./ classpath:/config/ classpath:/

这是官方文档链接:

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

我认为这很有帮助。


谢谢Mykhalio,我对问题进行了编辑。我看到了这个文档。我认为它并不能满足我提到的场景。 - user3833308
1
我在询问关于同样的问题,这是链接:https://dev59.com/bij_s4cB2Jgan1znUDai#53189491 - Mykhailo Moskura

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接