Логические операторы не работают должным образом в 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

"${propFlag1:false} && ${propFlag2:false}" даст текст типа "true && false". "${propFlag1 && propFlag2}" выглядит лучше всего. Точно сказать не могу.
Joop Eggen 25.04.2018 14:11

Выдает ошибку, Could not autowire field, я могу попробовать какой-нибудь другой вариант? Я тоже пробовал использовать and, но безуспешно.

Nisarg Patil 25.04.2018 14:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
610
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно Документация SpEL, это должно работать:

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

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

Сработало у меня! Спасибо.

Nisarg Patil 25.04.2018 14:50

Другие вопросы по теме