【问题标题】:Spring boot application configuration questionSpring Boot 应用配置问题
【发布时间】:2018-11-09 21:59:05
【问题描述】:

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

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

每个模块都有自己的配置,例如module-1是与mysql对话的库,它有自己的配置(连接字符串、用户名、密码等...)

现在我想在module-1中以Java POJO的形式来表示这个配置。 application.yml 和一个读取配置并设置值的 bean。

例如

class Module1Config {

  private String key1;
  private String key2;

  // getters & setters
}

application.yml 在模块 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 对象从模块 1 获得分配的默认值集,然后是任何应用程序指定为覆盖的值

【问题讨论】:

    标签: java spring spring-boot


    【解决方案1】:

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

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

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

    这里是官方文档的链接:

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

    我觉得很有帮助

    【讨论】:

    • 感谢 Mykhalio,我对问题进行了编辑。我看到了这个文件。我不认为它满足我提到的场景。
    • 我在问同样的问题,这里是链接:stackoverflow.com/questions/53189279/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-02
    • 2018-12-26
    • 2016-11-14
    • 2020-09-23
    • 2019-12-01
    • 1970-01-01
    相关资源
    最近更新 更多