在 Spring 引导应用程序中访问用户在 cloudfoundry 中提供的环境变量

Accessing user provided env variables in cloudfoundry in Spring Boot application

我为我在 cloudfoundry/pivotal 网络服务中托管的应用程序定义了以下用户提供的环境变量:

MY_VAR=test

我正在尝试这样访问:

System.getProperty("MY_VAR")

但我在 return 中得到的是空值。任何关于我做错了什么的想法都将不胜感激。

环境变量和系统属性是两个不同的东西。如果您使用 cf set-env my-app MY_VAR test 设置环境变量,那么您将使用 System.getenv("MY_VAR") 在 Java 中检索它,而不是使用 System.getProperty

更好的选择是利用 Spring 环境抽象和 @Value 注释等功能。如 Spring Boot documentation 所示,这允许您将注入到应用程序中的值指定为环境变量、系统属性、静态配置或外部配置,而无需应用程序代码显式检索值。

Scott Frederick 回答的另一种可能性(抱歉,我无法对原文发表评论 post):

可以在 application.yml:

中轻松访问用户提供的环境变量
my:
  var: ${MY_VAR}

然后您可以像这样使用@Value-Annotation:

@Value("${my.var}")
String myVar;