Java application.yml是否支持环境变量?

Java application.yml是否支持环境变量?,java,spring,yaml,spring-boot,Java,Spring,Yaml,Spring Boot,我尝试在application.yml配置中使用env变量,如下所示: spring: main: show_banner: false --- spring: profiles: production server: address: $OPENSHIFT_DIY_IP port: $OPENSHIFT_DIY_PORT 但是环境变量没有被解析。我必须提供不同的符号吗 在导轨中,您可以使用 唯一的选择是运行应用程序,如下所示: java -jar my.jar -

我尝试在application.yml配置中使用env变量,如下所示:

spring:
  main:
    show_banner: false

---

spring:
  profiles: production
server:
  address: $OPENSHIFT_DIY_IP
  port: $OPENSHIFT_DIY_PORT
但是环境变量没有被解析。我必须提供不同的符号吗

在导轨中,您可以使用

唯一的选择是运行应用程序,如下所示:

java -jar my.jar --server.address=$OPENSHIFT_DIY_IP --server.port=$OPENSHIFT_DIY_PORT

试试
${OPENSHIFT\u DIY\u PORT}
(常用的Spring占位符符号)。有关文档,请参阅。

如果未提供环境变量,您甚至可以添加默认值:

logging:
  level:
    root: ${LOGGING_LEVEL_ROOT:info}

这正是我所需要的:
app.name=MyApp.description=${app.name}是一个Spring Boot应用程序
只是要指出-如果你使用kotlin,你需要把你的引用放在引号中,并转义
$
eg
根:\${LOGGING\u LEVEL\u root:info}
伙计们,启动应用程序时,如何通过unix cli传递OPENSHIFT_DIY_端口?我知道我们可以使用-D来传递覆盖参数,但这也适用于env变量吗?例如:nohupjava-Xmx1024m-jar-dsspring.profiles.active=“随便什么”。有没有办法用env vars做到这一点?@IgorDonin,变量赋值和程序的串联会为您调用一个选项吗?例如:
$MY_ENV=value&&java-jar…
我在继承的一个应用程序中发现了这种语法,但一直找不到显示这种语法的Spring文档。这是相当明显的发生了什么,但能够找到它的文档将是很好的。谢谢分享-我现在对我的结论更有信心了。是在配置UB中使用默认值,还是可以显式声明?这是语法链吗?你能做
${MY_EXPECTED_VALUE:${${MY_ENV}{u MY_EXPECTED_prefix:default_VALUE}}}
读一下上面的文档会很好吗?我的默认值中能有分号吗?这有文档记录吗?