我想用ENV设置覆盖application.properties中的任何属性。在我的应用程序中,我使用DOT“”前缀“来定义属性。”和后缀“破折号”(例如“ - ”)。Spring Boot:如何在Linux ENV .profile上用短划线“ - ”覆盖属性?
例如:
application.server.jgroups-port= some 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
三(THIS WORKS!),
Windows ENV >> APPLICATION_SERVER_JGROUPS-PORT = 5445
environment.getProperty("application.server.jgroups-port") returns 5445
请注意,最后一个“破折号”(例如“ - ”)。
YAY!我已经使用“短划线”有效地设置了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")
它看起来像org.springframework.core.env.Sy stemEnvironmentPropertySource是我需要做一些工作的地方...就像不知何故,支持 – Jason 2015-01-27 22:49:20