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

Mar*_*ijk 82 java spring yaml spring-boot

我尝试在我的application.yml configration中使用env变量,如:

spring:
  main:
    show_banner: false

---

spring:
  profiles: production
server:
  address: $OPENSHIFT_DIY_IP
  port: $OPENSHIFT_DIY_PORT
Run Code Online (Sandbox Code Playgroud)

但是env变量没有解决.我必须提供不同的符号吗?

在Rails中,您可以使用<%= ENV ['FOOVAR']%>

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

java -jar my.jar --server.address=$OPENSHIFT_DIY_IP --server.port=$OPENSHIFT_DIY_PORT
Run Code Online (Sandbox Code Playgroud)

Dav*_*yer 114

尝试${OPENSHIFT_DIY_PORT}(通常的Spring占位符表示法).请参阅此处了解文档.

  • 只是要指出 - 如果您使用 kotlin,则需要将引用放在引号中并转义 `$` 例如 `root: "\${LOGGING_LEVEL_ROOT:info}"` (6认同)
  • 这正是我所需要的: `app.name=MyApp app.description=${app.name} is a Spring Boot application` (2认同)
  • @IgorDonin,变量赋值和程序的串联会为您调用一个选项吗?例如:`$MY_ENV=value &amp;&amp; java -jar ...` (2认同)

Ale*_*mov 55

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

logging:
  level:
    root: ${LOGGING_LEVEL_ROOT:info}
Run Code Online (Sandbox Code Playgroud)

  • 我在我继承的应用程序中找到了这种语法,并且无法找到显示此内容的Spring文档.发生了什么是相当明显的,但是能够找到它的文档会很好.感谢您的分享 - 我现在对结论更有信心. (4认同)