Spring 配置文件 属性 值在 yaml 文件中被覆盖

The Spring profile property values being overridden in yaml file

所以我的 属性 文件看起来像:-

spring:
 profiles:
   active: {SPRING_PROFILE:default}
---
spring:
 application:
   name: application-mode1
 config:
   activate:
     on-profile: mode1
config:
 filter:
  ruleId: 1
---
spring:
 application:
   name: application-mode2
 config:
   activate:
     on-profile: mode2
config:
 filter:
  ruleId: 2

我在运行时设置 SPRING_PROFILE 值。所以在同一个环境中有两个相同应用程序的部署。这两个配置文件(mode1,mode2)被映射到特定的部署作为 spring 启动日志“消息”:“以下配置文件处于活动状态:mode1”,建议但是在获取 ruleId 时只提到最后一个两个应用程序都获取了更新的值,而不是配置文件特定的规则 ID。在这种情况下,它是 2,但如果我反转它,这两个应用程序都将是 1。请提出任何替代方案。此应用程序使用 kubernetes 部署。

您使用的配置仅适用于 Spring boot 2.4 及更高版本(参见 relevant blogpost)。

在此之前,您必须使用 spring.profiles 属性。例如:

spring:
 profiles:
   active: ${SPRING_PROFILE:default} # The dollar sign was also missing
---
spring:
 application:
   name: application-mode1
 profiles: mode1
config:
 filter:
  ruleId: 1
---
spring:
 application:
   name: application-mode2
 profiles: mode2
config:
 filter:
  ruleId: 2