В компоненте Spring у меня есть следующее:
@Value("${myValue}")
private String value;
Значение введено правильно. Однако переменная должна быть необязательной, она передается в качестве параметра командной строки (который затем добавляется в контекст Spring с помощью SimpleCommandLinePropertySource ), и этот аргумент не всегда будет существовать.
Я пробовал оба следующих варианта, чтобы указать значение по умолчанию:
@Value("${myValue:}")
@Value("${myValue:DEFAULT}")
но в каждом случае аргумент по умолчанию после двоеточия вводится, даже если есть фактическое значение - это кажется переопределением того, что Spring должен вводить.
Как правильно указать, что @Value не требуется?
Спасибо
spring
spring-bean
user1052610
источник
источник
@Value("${some.prop:}")
действительно работает для меня. Это единственное примечание к этой переменной.Ответы:
Исходя из предположения, что под словом «не требуется» вы имеете в виду
null
...Вы правильно заметили, что вы можете указать значение по умолчанию справа от
:
символа. Ваш пример был@Value("${myValue:DEFAULT}")
.Вы не ограничены простыми строками в качестве значений по умолчанию. Вы можете использовать выражения SPEL , и возвращаемое простое выражение SPEL
null
:источник
Если вы используете Java 8, вы можете воспользоваться ее
java.util.Optional
классом. Вам просто нужно объявить переменную следующим образом:Затем вы можете проверить, определено ли значение лучше или нет:
Надеюсь, поможет!
источник
Optional
типов в полях класса - не лучшая практика .value
нулевой.