逻辑运算符在 SpEL 中未按预期工作
Logical operators not working as expected in SpEL
我有一个用例,其中有两个布尔属性,我需要根据它们导出实例变量的值。下面是代码片段:
@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;
这里,propFlag1
和 propFlag2
是属性文件中的标志,分别具有值 true
和 false
。
为 flag1
和 flag2
正确注入了值,但是对于 flag3
和 flag4
,注入的值分别为 false
和 true
而不是false
两者。
因此,当我尝试使用 &&
时,它不是对两个值进行 AND 运算,而是注入第一个变量本身的值。我在这里做错了什么?
PS : 我是 SpEL 新手
根据 SpEL documentation,这应该有效:
@Value("#{${propFlag2:false} and ${propFlag1:false}}")
private Boolean flag3;
@Value("#{${propFlag1:false} and ${propFlag2:false}}")
private Boolean flag4;
我有一个用例,其中有两个布尔属性,我需要根据它们导出实例变量的值。下面是代码片段:
@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;
这里,propFlag1
和 propFlag2
是属性文件中的标志,分别具有值 true
和 false
。
为 flag1
和 flag2
正确注入了值,但是对于 flag3
和 flag4
,注入的值分别为 false
和 true
而不是false
两者。
因此,当我尝试使用 &&
时,它不是对两个值进行 AND 运算,而是注入第一个变量本身的值。我在这里做错了什么?
PS : 我是 SpEL 新手
根据 SpEL documentation,这应该有效:
@Value("#{${propFlag2:false} and ${propFlag1:false}}")
private Boolean flag3;
@Value("#{${propFlag1:false} and ${propFlag2:false}}")
private Boolean flag4;