@Value – adnotacja umożliwiająca wstrzykiwanie wartości. Umożliwia również przekazywanie wartości domyślnych.
Z wykorzystaniem adnotacji @Value można wyczytywać wartości zapisane w pliku konfiguracyjnym. Domyślny plik konfiguracyjny dla SpringBoot jest automatycznie tworzony i nazywa się application.properties.
Podstawowe wczytywanie wartości
Plik konfiguracyjny przyjmuje konstrukcje: klucz1=wartość1 klucz2=wartość2 Po kluczu programista odwołuje się do wartości jaką umieścił w pliku konfiguracyjnym.
Przykładowo plik application.properties może mieć następujące wpisy:
Nie ma znaczenia jaką budowę będzie miał klucz. Lecz dobrą praktyką jest napisanie go małymi literami. Pierwszy człon powinien być nazwą klasy + kropka + nazwa zmiennej do której będzie wczytywana wartość.
W tym przykładzie nazwą dla kasy jest myConfigReader a dla pola exampleString
Zaletą mechanizmu wstrzykiwania wartości jest automatyczne konwertowanie wartości. Programista nie musi ręcznie dokonywać rzutowania lecz mechanizm Spring Boot dokonuje tego w sposób automatyczny. Rezultat przekładu widoczny poniżej:
Przekazywanie wartości domyślnych
Dopuszczalne jest definiowanie wartości domyślnych. Oznacza, to, że jeśli kontekst Spring nie znajdzie w pliku konfiguracyjnym zdefiniowanej zmiennej, to do pola wstrzyknie wartość domyślną. Wartość domyślną definiuje się wewnątrz adnotacji @Value po dwukropku – tak jak widać to na przykładzie poniższym. W przypadku ciągu tekstowego nie umieszcza się go dodatkowo w cudzysłowie.
Sprawa komplikuje się w przypadku umieszczenia danych w liście. Postępując standardowo do listy zostanie przypisany tylko jeden element. Rozwiązaniem jest wykorzystanie Spring Expression Language (SpEL).
Zastosowanie SpEL i metody split można osiągnąć efekt, że każdemu elementowi oddzielonemu przecinkiem zostanie przypisany oddzielny indeks w liście
Wnioski
Z wykorzystaniem adnotacji @Value można wstrzykiwać wartości do pól. Przekazywać można tak obiekty, typy proste, tablice czy listy. @Autowired w przeciwieństwie do @Value pozwala tylko na wstrzykiwanie obiektów zarządzanych przed Contexts and Dependency Injection.
W kolejnej części opisany zostanie sposób automatycznego wczytywania konfiguracji do klasy.
Cały kurs opisujący mechanikę i działanie Spring Boot od podstaw znajdziesz tutaj: Kurs Spring Boot
Aktywny programista i energiczny trener. Specjalizuje się w Spring Boot i uczę go w ramach AkademiaSpring.pl. Po godzinach udzielam się na YouTubach. Więcej o mnie.