application.yml支持环境变量吗?

问题描述 投票:0回答:5

我尝试在 application.yml 配置中使用环境变量,例如:

spring:
  main:
    show_banner: false

---

spring:
  profiles: production
server:
  address: $OPENSHIFT_DIY_IP
  port: $OPENSHIFT_DIY_PORT

但是环境变量没有解析。我必须提供不同的符号吗?

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

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

java -jar my.jar --server.address=$OPENSHIFT_DIY_IP --server.port=$OPENSHIFT_DIY_PORT
java spring yaml spring-boot
5个回答
246
投票

尝试

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


148
投票

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

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

1
投票

总之是的。您可以使用 @Value 从 application.ymlapplication.properties

加载环境变量

此外,如果您需要不同的数据类型来执行验证和业务逻辑,您可以加载变量并自动转换它们。

server:
  address: ${OPENSHIFT_DIY_IP}
  port: ${OPENSHIFT_DIY_PORT}

加载信息

@Value("${server.address}")
private String serverAddress;

@Value("${server.port}")
private Integer serverPort;

1
投票

答案已经给出了。您可以使用像

IntelliJ
这样的IDE来提供环境变量,您可以按照以下方式进行操作

enter image description here

enter image description here

enter image description here


0
投票

添加环境变量后请记住重新启动 IDE(STS 4、Eclipse、Netbeans、IntelliJ 等)。否则,新变量将不可用于当前 IDE 上运行的应用程序。 重新启动 IDE!

© www.soinside.com 2019 - 2024. All rights reserved.