Lombok jest małą i bardzo przyjemną biblioteką, która pozwala nam ograniczyć boiler code w klasach Javy. Dzięki użyciu adnotacji, część kodu jest generowana podczas kompilacji i dodawana w odpowiednie miejsca.
Sama biblioteka jest potrzebna tylko w kompilacji, dlatego nie obciąża finalnej aplikacji. Dodatkowo Lombok nie powoduje spadku wydajności aplikacji, więc nie musimy się obawiać przed korzystaniem z niego.
Przykład użycia
Domyślnie, taka prosta klasa wręcz powala swoją niepotrzebną objętością:
Na powyższym przykładzie widzimy 48 linijek, z czego piszemy dwie, a o wygenerowanie reszty prosimy IDE (o ile nie jesteśmy masochistami 😉).
To jak to wygląda z Lombokiem
Wcześniejszy przykład można znacząco skrócić, co uprzyjemnia jego czytanie:
Teraz nasza klasa jest „odchudzona” o 40 linijek, a wszystko praktycznie kryje się za tymi dwiema adnotacjami:
- @Data – jest to skrót agregujący inne adnotacje, które często występują w typowym POJO ( Plain Old Java Object)
- @ToString – generuje toString, w formacie Klasa(pole=wartość, …)
- @EqualsAndHashCode – dba o tą najbardziej upierdliwą część 😉
- @Getter i @Setter – tworzy getter i setter z czego ten drugi jest tylko na niefinalne pola
- @RequiredArgsConstructor – tworzy konstruktor dla finalnych pól
- @AllArgsConstructor – tworzy konstruktor dla wszystkich pól
No dobra, może trochę kłamałem że są to tylko dwie adnotacje, ale i tak o wiele częściej będziemy korzystać z tego skrótu zamiast używać ich osobno. Same adnotacje pojedynczo odpowiadają za generowanie tych metod od których są nazwane.
Inne przydatne funkcje
Lombok posiada dużo ciekawych adnotacji, które możecie znaleźć tutaj, wraz z ich pełniejszą dokumentacją, ja natomiast skupię się na obiektywnie najprzydatniejszych funkcjach.
var i val
Te słowa kluczowe służą do deklaracji zmiennych lokalnych, z zastrzeżeniem że:
- var – służy do deklaracji zmiennych lokalnych (zostało wprowadzone jako element języka Java w wersji 10, więc jeśli używasz tej lub nowszej wersji to powinieneś używać słowa var wbudowanego w język )
- val – działa dokładnie tak jak var z tym że zmienna jest finalna
@Value
Adnotacja ta jest bliźniaczym skrótem do @Data, z tym że wszystkie pola pola są z domysłu prywatne i finalne, sama klasa również staje się finalna. Nie są również tworzone settery, a konstruktor pokrywa każde pole, poza tymi które są inicjalizowane przy deklaracji.
@Builder
Dzięki tej adnotacji możemy prosto i szybko zastosować wzorzec projektowy Builder. Po jego dodaniu, kompilator wygeneruje statyczną zagnieżdżoną klasę buildera oraz adekwatny konstruktor. Stosując go razem z @Value łatwo uzyskamy w pełni funkcjonalny value object razem z jego builderem.
@Log
Jest to jeden z najprzyjemniejszych sposobów na dodanie loggera w polu o nazwie log. Dzięki lombokowi możemy wybierać odpowiadającą nam bibliotekę (osobno) i dodać ją prostą adnotacją np. @Log4j, @Slf4j. Pełną listę znajdziesz tutaj.
Jak dodać lomboka
Lomboka można łatwo dodać używając Mavena, bądź Gradle dodając go do zależności. Można oznaczyć go jako provided (Maven), lub compileOnly (Gradle), dzięki czemu nie będzie obciążał gotowej aplikacji.
Warto jest się też zaopatrzyć w plugin do naszego ulubionego edytora, gdyż inaczej nie będzie on widział wygenerowanych metod i może odmówić kompilacji. Znaleźć go można na górnym pasku nawigacji w sekcji Install.
A co jeśli lombok już nie będzie potrzebny
Jeśli zdarzy się sytuacja że będziesz musiał kiedyś pozbyć się lomboka z projektu, to nie ma powodów do obaw. Dzięki pluginom możesz użyć opcji Delombok na klasie, bądź całym projekcie, co usunie adnotacje i wygeneruje odpowiadający im kod.
Podsumowanie
Lombok jest świetnym rozwiązaniem na pozbycie się choć części niepotrzebnego kodu. Poprawia czytelność i uprzyjemnia pracę z kodem. Warto zaproponować jego użycie w zespole jeśli jeszcze z niego nie korzystacie.
Be First to Comment