逻辑运算符在SpEL中未按预期工作

时间:2018-04-25 12:00:27

标签: java spring spring-el

我有一个用例,我有两个布尔属性,基于此我需要派生一个实例变量的值。以下是代码段:

@Value("${propFlag1:false}")
private Boolean flag1;

@Value("${propFlag2:false}")
private Boolean flag2;

@Value("${propFlag2:false && propFlag1:false}")
private Boolean flag3;

@Value("${propFlag1:false && propFlag2:false}")
private Boolean flag4;

此处,propFlag1propFlag2是属性文件中的标记,分别具有值truefalse。 正在为flag1flag2正确注入值,但对于flag3flag4,注入的值分别为falsetrue,而不是两者false 因此,当我尝试使用&&时,它不是ANDing两个值,而是注入第一个变量本身的值。我在这里做错了什么?

PS:我是SpEL的新手

1 个答案:

答案 0 :(得分:4)

根据SpEL documentation,这应该有效:

@Value("#{${propFlag2:false} and ${propFlag1:false}}")
private Boolean flag3;

@Value("#{${propFlag1:false} and ${propFlag2:false}}")
private Boolean flag4;