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
所以我的 属性 文件看起来像:-
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