JavaSpring@Value注释和参数

JavaSpring@Value注释和参数,java,spring,Java,Spring,因此,我有一个environment属性,它应该反映我的应用程序运行的环境 @Value("${environment}") private String environmentName; //This will be set as sandbox, staging, production 我还有一个功能标志(该功能称为‘superFeature.enable’),应该根据应用程序部署到的环境进行设置 //Config file superFeature.enable.sandbox=true

因此,我有一个environment属性,它应该反映我的应用程序运行的环境

@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。以上代码段的语法正确吗?我有什么遗漏吗?

你不应该把

@Value("${superFeature.enable.{environmentName}:false}")
在那里? 恐怕这只是个猜测。那里看起来不一致。但是,我不知道上面这两条语句是在什么上下文和顺序下执行的,所以我不知道在哪里知道哪些变量。 我建议先多了解一些信息。比如,如果用环境的预期字符串替换{environment},那么此时可以在代码中获得环境值。我不知道是否有可能实现这种双重间接寻址。

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


那么,您的建议是我应该传入Java变量的名称(environmentName),而不是配置的名称(environment)?
@Value("${superFeature.enable.${environment}:false}")