Java Spring Boot:如何指定在application.properties中包含破折号的环境变量?

Java Spring Boot:如何指定在application.properties中包含破折号的环境变量?,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个application.properties文件,看起来像这样: mcl.sso.frontend-url=http://blah.com:9001 mcl.sso.mocking-agent=false 我试图从命令行重写这两个变量。这应该可以通过设置环境变量来实现。下面是我运行命令的方式: MCL_SSO_FRONTEND_URL='foobar' MCL_SSO_MOCKING_AGENT='true' ./gradlew run 但是,当我打印出这些变量的值时,mcl.sso

我有一个
application.properties
文件,看起来像这样:

mcl.sso.frontend-url=http://blah.com:9001
mcl.sso.mocking-agent=false
我试图从命令行重写这两个变量。这应该可以通过设置环境变量来实现。下面是我运行命令的方式:

MCL_SSO_FRONTEND_URL='foobar' MCL_SSO_MOCKING_AGENT='true' ./gradlew run

但是,当我打印出这些变量的值时,
mcl.sso.mocking代理
等于“true”(如预期),但
mcl.sso.frontend url
仍然等于“”(意外)。为什么
mcl.sso.frontendurl
不更改属性的值?我只能假设这与Spring将环境变量转换为属性键的方式有关,但我找不到任何关于这方面的具体文档。

这在Spring Boot
1.2.5
时已经修复。以前,您必须使用
MCL\u SSO\u FRONTEND-URL
(请注意不能转换为下划线的破折号)


您可以使用。

只需去掉破折号:

mcl.sso.mocking-agent > MCL_SSO_MOCKINGAGENT

您正在寻找“轻松的属性绑定”,它的实际实现方式是。。。亚优雅。我不记得它的发电机在哪里,但这可能是一个开始work@AnandShah谢谢,这是一个有用的参考。在Linux上,环境变量键中不允许使用破折号。解决方案是使用
MCL\u SSO\u FRONTENDURL
。即,属性名称本身中没有分隔符。记录在这里:多伦,这正是我写的,不是吗?以前应该加上破折号,不再需要了。史蒂芬:当然,这就是你的意思。我不清楚酒店名称中是否应该没有delimeter,即使它由多个单词组成。在读了你的答案后,我不得不在做对之前对这个问题进行一些思考。只是想澄清一下。从env变量中删除连字符似乎不起作用anymore@DoronGold答案提到了SpringBoot1.2.5,但您的评论引用了SpringBoot2.x中提供的功能。这可能会让人们误以为它在旧版本中也可用,特别是考虑到链接页面没有提到它是在哪个版本的SB中引入的。