【问题标题】:Spring Boot doesn't resolve property placeholder in yaml for apring.profiles.active propertySpring Boot 不会在 yaml 中为 spring.profiles.active 属性解析属性占位符
【发布时间】:2021-03-08 08:45:46
【问题描述】:

我习惯于使用 ${...} 从 .yml 文件中引用另一个属性。 所以我有 Spring Boot v2.3.0.RELEASE 和以下 .yml:

env: dev
spring:
  profiles:
    active: ${env}

但不幸的是,当我运行我的应用程序时,我看到了

The following profiles are active: ${env}

尽管这个占位符在其他属性中完美运行,例如我定义为的 kafka 主题

topic: ${env}.topic_name

我可以在日志中看到它已正确解决

Kafka producer topic=dev.topi_name

似乎spring.profiles.active 是这条规则的某种例外,但我找不到原因。以及如何在没有环境变量、外部键、代码设置等的情况下获得相同的结果(配置文件取决于其他属性变量)?

【问题讨论】:

  • 将日志记录级别设置为 TRACE 并查看并粘贴输出。也许春天会暗示它为什么拒绝:)

标签: java spring spring-boot yaml spring-profiles


【解决方案1】:

这个问题已在 Spring Boot 2.4.0 中作为更新的配置文件处理的一部分得到修复(更多信息请参见 2.4.0 release notes)。

如果有兴趣,您可以使用新属性spring.config.use-legacy-processing 来看看spring.profiles.active 处理方式的不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-16
    • 2015-05-22
    • 1970-01-01
    • 2014-03-23
    • 2016-02-22
    • 2019-04-13
    • 2018-12-18
    • 2016-03-04
    相关资源
    最近更新 更多