W fasoli wiosennej mam następujące elementy:
@Value("${myValue}")
private String value;
Wartość jest prawidłowo wprowadzona. Jednak zmienna musi być opcjonalna, jest przekazywana jako parametr wiersza poleceń (który jest następnie dodawany do kontekstu Spring za pomocą elementu SimpleCommandLinePropertySource ), a ten argument nie zawsze będzie istniał.
W celu podania wartości domyślnej wypróbowałem oba poniższe sposoby:
@Value("${myValue:}")
@Value("${myValue:DEFAULT}")
ale w każdym przypadku domyślny argument po dwukropku jest wstawiany, nawet jeśli istnieje rzeczywista wartość - wydaje się, że zastępuje to, co powinien wstrzyknąć Spring.
Jaki jest prawidłowy sposób określenia, że @Value nie jest wymagane?
Dzięki
spring
spring-bean
user1052610
źródło
źródło
@Value("${some.prop:}")
działa dla mnie. To jedyna adnotacja dotycząca tej zmiennej.Odpowiedzi:
Wychodząc z założenia, że przez „nie wymagane” masz na myśli
null
...Poprawnie zauważyłeś, że możesz podać domyślną wartość po prawej stronie
:
znaku. Twój przykład był@Value("${myValue:DEFAULT}")
.Nie jesteś ograniczony do zwykłych ciągów znaków jako wartości domyślnych. Możesz używać wyrażeń SPEL , a proste wyrażenie SPEL do zwrócenia
null
to:źródło
Jeśli używasz Java 8, możesz skorzystać z jej
java.util.Optional
klasy. Wystarczy zadeklarować zmienną w następujący sposób:Następnie możesz sprawdzić, czy wartość jest zdefiniowana w ładniejszy sposób:
Mam nadzieję, że to pomoże!
źródło
Optional
typów w polach klas nie jest najlepszą praktyką .value
jest null.