Obecnie używam adnotacji @Value Spring 3.1.x w następujący sposób:
@Value("${stuff.value:}")
private String value;
Spowoduje to umieszczenie w zmiennej pustego ciągu znaków, jeśli atrybut nie jest obecny. Chciałbym mieć wartość null jako domyślną zamiast pustego ciągu. Oczywiście chcę również uniknąć błędu, gdy właściwość stuff.value nie jest ustawiona.
java
spring
spring-annotations
Kevin Schmidt
źródło
źródło
To jest naprawdę stare, ale teraz możesz używać Spring EL, np
@Value("${stuff.value:#{null}}")
Zobacz to pytanie .
źródło
Dzięki @vorburger:
ustawi wartość ciągu na null bez żadnych innych konfiguracji.
źródło
Daję zasługę @nosebrain, ponieważ nie wiedziałem o „wartości null”, ale wolę całkowicie unikać używania wartości null, szczególnie, że jest to trudne do przedstawienia
null
w pliku właściwości.Ale tutaj jest alternatywa używania null bez out,
null-value
więc będzie działać z każdym symbolem zastępczym właściwości.Osobiście wolę mój sposób, ponieważ może później chcesz
stuff.value
być wartością oddzieloną przecinkami lub może do Enum, przełącznik jest łatwiejszy. Test jednostkowy jest również łatwiejszy :)EDYCJA: na podstawie twoich komentarzy na temat używania wyliczeń i mojej opinii o nieużywaniu null.
Powyższe działa dobrze dla mnie. Unikasz null. Jeśli pliki właściwości chcą wyraźnie ustawić, że nie chcą tego obsługiwać, to robisz ( ale nie musisz nawet tego określać, ponieważ domyślnie będzie to NOTSET ).
null
jest bardzo zły i różni się odNOTSET
. Oznacza to, że test sprężynowy lub jednostkowy nie ustawił tego, dlatego IMHO jest różnica. Nadal prawdopodobnie użyłbym notacji ustawiającej (poprzedni przykład) jako łatwiejszego do przetestowania jednostkowego (zmienne prywatne są trudne do ustawienia w teście jednostkowym).źródło
@Value("${stuff.value:NOTSET}")
zadziała?Jeśli chcesz wstawić pusty (0 długości) "" ciąg jako domyślny @Value - użyj SPEL (język wyrażeń wiosennych) w następujący sposób:
# {''} po prostu pobiera pusty ciąg jako domyślny wstrzyknięty @ Value.
przez yl
źródło