所以,我有一个环境属性,应该反映我的应用程序运行的环境。
@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。我的语法对于上面的代码片段是否正确?我有什么遗失的吗?
答案 0 :(得分:0)
你不应该放
@Value("${superFeature.enable.{environmentName}:false}")
有? 我只是猜测,我很害怕。那里看起来像是不一致。但是,我不知道上面这两个语句在哪个上下文和顺序中被执行,所以我不知道哪个变量在哪里知道。 我建议先获取更多信息。比如,如果将{environment}替换为您的环境的预期字符串会发生什么,您是否可以在此时获得代码中的环境值。我不知道是否有可能实现这种双重间接。
答案 1 :(得分:0)
它应该是以下(环境也包含在以$开头的占位符语法中):
@Value("${superFeature.enable.${environment}:false}")