gpt4 book ai didi

linux - Spring Boot : How to override properties with dash "-" on Linux ENV . 配置文件?

转载 作者:IT王子 更新时间:2023-10-29 01:26:30 24 4
gpt4 key购买 nike

我想用 ENV 设置覆盖 application.properties 中的任何属性。在我的应用程序中,我使用带有点“.”的“前缀”来定义属性。和后缀“破折号”(例如,“-”)。

例如:

application.server.jgroups-port=一些端口#

现在,我想从 OS ENV 设置中覆盖此属性。

在 Windows 上,当我设置此 ENV 属性时,这是我的结果:

首先(失败),

Windows ENV >> APPLICATION_SERVER_JGROUPS_PORT = 5445

environment.getProperty("application.server.jgroups-port") returns NULL

第二个(失败)

Windows ENV >> APPLICATION_SERVER_JGROUPSPORT = 5445

environment.getProperty("application.server.jgroups-port") returns NULL

第三(这行得通!)

Windows ENV >> APPLICATION_SERVER_JGROUPS-PORT = 5445

environment.getProperty("application.server.jgroups-port") returns 5445

注意,最后一个上的“破折号”(例如“-”)。

耶!我已经使用“破折号”从 Windows ENV 有效地设置了属性。 Spring Boot 将此 ENV 完美映射到应用程序属性。

但是,在 Linux 上,它在其 ENV 中不接受“破折号”(例如,“-”),因此当我使用与在 Windows 上使用的相同方法时,我的 .profile 会崩溃 >> APPLICATION_SERVER_JGROUPS-PORT = 5445. 我需要做什么才能使 Linux ENV 设置设置我的“application.server.jgroups-port”属性?

编辑:看起来 org.springframework.core.env.SystemEnvironmentPropertySource 是我需要做一些工作来支持 Java 中的虚线属性名称作为 Linux ENV 的地方。例如,在 SystemEnvironmentPropertySource 中调用 getProperty("somePrefix.foo-suffix") = APPLICATION_SERVER_JGROUPS_PORT 就像它有一个句点 - getProperty("somePrefix.foo.suffix")

最佳答案

您还可以提供一个名为 SPRING_APPLICATION_JSON 的环境变量,其中包含有效的 JSON。这将允许您覆盖具有特殊字符的键。例如:

export SPRING_APPLICATION_JSON='{"application.server.jgroups-port": 8080}'

这样,您还可以像这样覆盖在 yaml 中定义的数组:

foo.bar:
- 1
- 2
- 3

与:

export SPRING_APPLICATION_JSON='{"foo.bar": ["4","5","6"]}'

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config

关于linux - Spring Boot : How to override properties with dash "-" on Linux ENV . 配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28158732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com