在 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;
我为我在 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;