java - Spring Boot 无法解析 yaml 中 spring.profiles.active 属性的属性占位符

标签 java spring spring-boot yaml spring-profiles

我习惯于使用 ${...} 从 .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 是此规则的某种异常(exception),但我找不到原因。我怎样才能得到相同的结果(配置文件取决于其他属性变量),没有环境变量,外部键,代码中的设置等?

最佳答案

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

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

关于java - Spring Boot 无法解析 yaml 中 spring.profiles.active 属性的属性占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65005635/

相关文章:

java - 你能在Spring中为@PreAuthorize设置一个动态值吗?

java - 使用 Hibernate 从数据库检索列表时出现 ClassCastException

java - Spring根据当前范围注入(inject)不同的bean

java - BufferedReader 字符串检查

jquery - 与 Spring MVC 框架的 Atmosphere 集成 :

java - 无法创建生产者以在 ActiveMQ 上发送消息

java - 使用 Spring MVC 对同一接口(interface)的多个实现进行动态依赖注入(inject)

java - JProfiler 不断抛出连接错误,检测到不同版本的 JProfiler

java - 应用函数后在 Hibernate 中搜索属性

java - 构建 apk 时出错 'libraries must use the exact same version specification'