因此,我有一个环境属性,该属性应该反映我的应用程序在哪个环境中运行。
@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}会发生什么情况,那么此时您能否在代码中获取环境值。我不知道是否有可能根本没有这种双重间接。