У меня есть вариант использования, в котором у меня есть два логических свойства, на основе которых мне нужно получить значение переменной экземпляра. Ниже приведен фрагмент кода:
@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
Выдает ошибку, Could not autowire field, я могу попробовать какой-нибудь другой вариант? Я тоже пробовал использовать and, но безуспешно.




Согласно Документация SpEL, это должно работать:
@Value("#{${propFlag2:false} and ${propFlag1:false}}")
private Boolean flag3;
@Value("#{${propFlag1:false} and ${propFlag2:false}}")
private Boolean flag4;
Сработало у меня! Спасибо.
"${propFlag1:false} && ${propFlag2:false}"даст текст типа"true && false"."${propFlag1 && propFlag2}"выглядит лучше всего. Точно сказать не могу.