1

所以,我有一个环境属性,它应该反映我的应用程序在什么环境中运行。

@Value("${environment}")
private String environmentName; //This will be set as sandbox, staging, production

我还有一个功能标志(功能称为“superFeature.enable”),应根据应用程序部署的环境进行设置。

//Config file
superFeature.enable.sandbox=true
superFeature.enable.staging=false
superFeature.enable.production=false


//@Service annotated class containing call to configuration

@Value("${superFeature.enable.{environment}:false}")
private boolean isSuperFeatureEnabled;

目前,当我在沙盒环境中运行我的应用程序时,isSuperFeatureEnabled总是错误的。我的语法对于上面的代码片段是否正确?有什么我想念的吗?

4

2 回答 2

0

你不应该把

@Value("${superFeature.enable.{environmentName}:false}")

那里?这只是一个猜测,恐怕。那里看起来很矛盾。但是,我不知道上面这两个语句是在哪个上下文和顺序中执行的,所以我不知道在哪里知道哪些变量。我建议先获取更多信息。例如,如果您将 {environment} 替换为您的环境的预期字符串会发生什么,您是否可以在此时获得代码中的环境值。我不知道是否有可能有这种双重间接。

于 2013-01-16T07:53:58.483 回答
0

它应该如下(环境也包含在以 $ 开头的占位符语法中):

@Value("${superFeature.enable.${environment}:false}")
于 2013-01-16T10:37:12.907 回答