Kurs Spring

Lombok - Podstawy

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:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>
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:
java -jar <ŚCIEŻKA_DO_REPOZYTORIUM>\org\projectlombok\lombok\1.18.8\lombok-1.18.8.jar install <ŚCIEŻKA_DO_ECLIPSE>
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:
java -jar 
c:\Users\javappa\.m2\repository\org\projectlombok\lombok\1.18.8\lombok-1.18.8.jar install C:\WORK\sts-4.2.2.RELEASE
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:
///////////////////////////
////Lombok annotations/////
///////////////////////////
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true, callSuper = true)
@ToString(onlyExplicitlyIncluded = true)
///////////////////////////

@Entity
@Table(name = "items")
Adnotacje dla metod wyglądaja w ten sposób (na przykładzie pola z nazwą itema):
/////Lombok/////
@ToString.Include
////////////////    
@Column(length = 255)
private String name;           
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:
    Item(Long id, String name) {
        this.id=id;
        this.name=name;
    }
    
  • @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.

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .


Pozycjonowanie stron: Grupa TENSE