Java Spring @Value注释和参数

时间:2013-01-16 07:51:23

标签: java spring

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

@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始终为false。我的语法对于上面的代码片段是否正确?我有什么遗失的吗?

2 个答案:

答案 0 :(得分:0)

你不应该放

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

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

答案 1 :(得分:0)

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

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