Lombok to biblioteka, która w ostatnich latach robi szaloną karierę. Pozwala pozbyć się z kodu często powtarzanych, ale rzadko zmieniających
się fragmentów (tzw. boilerplate). Mamy tu na myśli wszelkiego rodzaju konstruktory, gettery i settery, metody equals czy hashcode.
Zamiast wpisywać co chwilę w kodzie podobne do siebie metody, możemy teraz zlecić ich wygenerowanie w trakcie kompilacji projektu.
Wykorzystujemy do tego adnotacje typu
compile-time.
Projekt Lombok posiada oczywiście swoją stronę -
https://projectlombok.org,
na której opisywane są wszelakie zalety tego rozwiązania. Zachęcamy Cię do rzucenia okiem na udostępnione tam materiały, gdyż biblioteka ma naprawdę rozbudowane możliwości.
My skupimy się tutaj na najważniejszych i zarazem najczęściej stosowanych elementach, z których również skorzystaliśmy przygotowując projekt
spring-hibernate-materialy-praktyczne
(drugi projekt
spring-hibernate-materialy-praktyczne-bez-lomboka posiada dokładnie tę samą funkcjonalność, ale nie zawiera Lomboka).
Instalacja Lomboka w STS 4
Spring Tools Suite nie ma domyślnie zainstalowanego Lomboka. W celu uzyskania biblioteki należy podpiąć odpowiednią zależność w
pom.xml:
Biblioteka zainstaluje się w Twoim
repozytorium Mavena.
Kolejnym krokiem jest skopiowanie jar-a z
repozytorium do katalogu, w którym znajduje się Eclipse (STS 4). Aby to
osiągnąć wyszukaj bibliotekę w
repozytorium (powinna znajadować się w ścieżce katalogów
org/projectlombok/lombok),
a następnie wykonaj polecenie podobne do poniższego:
W ten w sposób zainstalujesz jar-a w swoim IDE. Jeśli masz wątpliwości co do komendy, to pokazujemy w jaki sposób wykonaliśmy instalację u nas:
Na koniec, aby zmiany mogły zostać zaaplikowane,
zrestartuj IDE. Po ponownym uruchomieniu Lombok będzie już gotowy do działania.
Podstawowe adnotacje Lomboka
Przyszedł czas na to by przyjrzeć się użytym w projekcie formom zapisu. Wszystkie adnotacje, które należą do Lomboka, a więc
nie są częścią Hibernate'a, zostały przez nas specjalnie oznaczone. Dzięki temu nie pomylisz się co jest czym.
Adnotacje dla klas wyglądają tak:
Adnotacje dla metod wyglądaja w ten sposób (na przykładzie pola z nazwą itema):
Na powyższych dwóch snippetach kodu dobrze widać, że adnotacje Lomboka zostały odpowiednio wyeksponowane, tak by nie zaburzać czytelności adnotacji Hibernate'a (w tym przypadku -
@Entity,
@Table,
@Column).
Co oznaczają te adnotacje?
-
@NoArgsConstructor
Nakazuje Lombokowi wygenerować bezargumentowy konstruktor w trakcie kompilacji klas.
Innymi słow, podczas regularnej kompilacji zostaje uruchomiony mechanizm, który powoduje, że klasa po skompilowaniu
posiada konstruktor bezparametrowy.
-
@AllArgsConstructor
Podobnie jak poprzednio tyle, że tutaj generowany jest konstruktor z argumentami, które odpowiadają wszystkim polom w klasie.
Oznacza to, że jeśli w klasie mamy na przykład pola id i name to
w pliku class znajdzie się konstruktor:
-
@EqualsAndHashCode
Pełny materiał ze wszystkimi źródłami kodu jest dostępny po wykupieniu pakietu. Zapraszamy!
Jeśli zakupiłeś materiał zaloguj się tutaj, aby uzyskać dostęp.