В настоящее время я использую аннотацию @Value Spring 3.1.x следующим образом:
@Value("${stuff.value:}")
private String value;
Это помещает в переменную пустую строку, если атрибут отсутствует. Я хотел бы иметь значение null по умолчанию вместо пустой строки. Конечно, я также хочу избежать ошибки, если свойство stuff.value не установлено.
java
spring
spring-annotations
Кевин Шмидт
источник
источник
Это действительно давно, но теперь вы можете использовать Spring EL, например
@Value("${stuff.value:#{null}}")
См. Этот вопрос .
источник
Спасибо @vorburger:
установит для строкового значения значение null без каких-либо других настроек.
источник
Я отдаю должное @nosebrain, поскольку я не знал о «нулевом значении», но я предпочитаю вообще избегать использования нулевых значений, особенно из-за того, что его сложно представить
null
в файле свойств.Но вот альтернатива с использованием null без out,
null-value
поэтому он будет работать с любым заполнителем свойств.Лично я предпочитаю свой способ, потому что, возможно, позже вы захотите
stuff.value
использовать значение, разделенное запятыми, или, возможно, использовать Enum, переключение будет проще. Его также проще провести модульное тестирование :)РЕДАКТИРОВАТЬ: на основе ваших комментариев об использовании перечислений и моего мнения об отказе от использования null.
Вышеупомянутое отлично работает для меня. Вы избегаете null. Если ваши файлы свойств хотят явно указать, что они не хотят его обрабатывать, тогда вы это делаете ( но вам даже не нужно указывать это, поскольку по умолчанию он будет НЕ УСТАНОВИТЬ ).
null
очень плохо и отличается отNOTSET
. Это означает, что пружина или модульный тест не установили его, поэтому ИМХО есть разница. Я бы по-прежнему, вероятно, использовал нотацию установщика (предыдущий пример), поскольку ее легче проводить в модульном тестировании (частные переменные трудно установить в модульном тесте).источник
@Value("${stuff.value:NOTSET}")
сработает?Если вам нужно ввести пустую (нулевую) строку в качестве @Value по умолчанию - используйте SPEL (язык выражения Spring) следующим образом:
# {''} просто возвращает вам пустую строку как введенную по умолчанию @ Value.
автор yl
источник