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

标签 linux spring spring-boot

我想用 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/

相关文章:

java - Spring RestController 在 Wildfly 上返回未找到 404

spring-boot - 将 ResourceProcessor 迁移到 HATEOAS 1.0.0 M1

java - 带有 Netty4 的 Spring RestTemplate 和 AsyncRestTemplate 永远挂起

linux - 自动化远程交互提示

python - Spring Batch 脚本项处理器

linux - 如何获取在 Docker 容器中运行的进程的内存使用情况?

javascript - 如何让javascript只接受给定的正则表达式?

spring - Gradle多项目构建

linux - 在awk中将中文翻译成urlencoding

linux - 在终端中访问带有重音符号/Unicode 的文件名