Lombok – mniej boilerplate code

Lombok automatycznie generuje gettery, settery, equals(), hashCode() i toString() za pomocą adnotacji. Zamiast 50 linii kodu wystarczą 3 adnotacje. Działa podczas kompilacji, więc nie wpływa na wydajność runtime.

Dlaczego Lombok to rewolucja w pisaniu kodu Java

Każdy Java developer zna ten problem – chcesz stworzyć prostą klasę z kilkoma polami, a musisz napisać dziesiątki linii kodu. Gettery, settery, konstruktory, equals(), hashCode(), toString() – wszystko to zabira czas i zaśmieca kod. Lombok rozwiązuje ten problem raz na zawsze.

Lombok to biblioteka Java która podczas kompilacji automatycznie generuje standardowy boilerplate code na podstawie adnotacji.

Co się nauczysz:

  • Jak skonfigurować Lombok w projekcie Maven/Gradle
  • Podstawowe adnotacje: @Getter, @Setter, @ToString
  • Zaawansowane adnotacje: @Data, @Builder, @AllArgsConstructor
  • Jak Lombok działa pod maską
  • Najczęstsze pułapki i jak ich unikać
Wymagania wstępne: Podstawy Java (klasy, pola, metody), znajomość Maven lub Gradle

Konfiguracja Lombok – pierwsze kroki

Instalacja Lombok to dosłownie jedna linia w Maven:


    org.projectlombok
    lombok
    1.16.18
    provided
Uwaga: Scope „provided” jest kluczowy – Lombok pracuje tylko podczas kompilacji, nie jest potrzebny w runtime.

Dla Gradle:

compileOnly 'org.projectlombok:lombok:1.16.18'

Podstawowe adnotacje – @Getter i @Setter

Zamiast pisać dziesiątki linii getterów i setterów:

// Bez Lombok - 30+ linii kodu
public class User {
    private String name;
    private String email;
    private int age;
    
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

Wystarczą dwie adnotacje:

// Z Lombok - 8 linii kodu
@Getter
@Setter
public class User {
    private String name;
    private String email;
    private int age;
}
Pro tip: Możesz używać @Getter/@Setter na poziomie klasy (wszystkie pola) lub na poziomie pojedynczego pola dla precyzyjnej kontroli.

@Data – szwajcarski scyzoryk Lombok

Najczęściej używana adnotacja @Data łączy w sobie:

  • @Getter i @Setter dla wszystkich pól
  • @ToString
  • @EqualsAndHashCode
  • @RequiredArgsConstructor
@Data
public class Product {
    private final Long id;  // final = będzie w konstruktorze
    private String name;
    private BigDecimal price;
    private boolean available;
}

@Data – meta-adnotacja która automatycznie generuje wszystkie standardowe metody potrzebne w typowej klasie danych.

@Builder – eleganckie tworzenie obiektów

Pattern Builder bez pisania dziesiątek linii kodu:

@Builder
@Data
public class Order {
    private String customerName;
    private String product;
    private int quantity;
    private BigDecimal totalPrice;
}

// Użycie:
Order order = Order.builder()
    .customerName("Jan Kowalski")
    .product("Laptop")
    .quantity(1)
    .totalPrice(new BigDecimal("2500.00"))
    .build();
@Builder to jak konstruktor LEGO – każdy element możesz dodać w dowolnej kolejności, a na końcu masz gotowy obiekt.

Jak Lombok działa pod maską

Lombok to procesor adnotacji (Annotation Processor) który:

  1. Podczas kompilacji analizuje twój kod źródłowy
  2. Generuje bytecode z dodatkowymi metodami
  3. Nie wpływa na runtime – zero overhead wydajnościowego
Możesz zobaczyć wygenerowany kod używając „javap -p YourClass” lub w IDE włączając opcję pokazywania wygenerowanych źródeł.

Najczęstsze pułapki początkujących

Typowy błąd: Używanie @Data z klasami dziedziczącymi – może powodować problemy z equals() i hashCode().
Pułapka: IDE może nie rozpoznawać wygenerowanych metod – potrzebujesz plugin Lombok dla IntelliJ/Eclipse.
Uwaga: @ToString może powodować nieskończone pętle przy relacjach dwukierunkowych – użyj @ToString.Exclude.

Konfiguracja IDE

Aby IDE rozpoznawało metody generowane przez Lombok:

IntelliJ IDEA: File → Settings → Plugins → szukaj „Lombok” → Install

Eclipse: Pobierz lombok.jar i uruchom: java -jar lombok.jar

Czy Lombok wpływa na wydajność aplikacji?

Nie. Lombok działa tylko podczas kompilacji. W runtime masz normalny bytecode Java, jakby metody napisał programista ręcznie.

Czy mogę używać Lombok w projektach produkcyjnych?

Tak. Lombok jest stabilny, używany przez tysiące projektów. Jednak niektóre zespoły preferują jawny kod dla lepszej czytelności.

Co jeśli chcę zmienić implementację getter/setter?

Możesz napisać własną implementację – Lombok nie wygeneruje metody jeśli już istnieje w kodzie.

Czy Lombok działa z wszystkimi IDE?

Potrzebujesz odpowiedniego pluginu. Dostępne dla IntelliJ IDEA, Eclipse, NetBeans i VS Code.

Jak debugować kod z Lombok?

Normalnie. Debugger widzi wygenerowane metody. Możesz stawiać breakpointy w wygenerowanych getterach/setterach.

🚀 Zadanie dla Ciebie

Stwórz klasę Employee z polami: id, firstName, lastName, email, salary. Użyj @Data i @Builder. Napisz metodę main() która utworzy 3 pracowników używając buildera i wyświetli ich dane.

Przydatne zasoby:

Co myślisz o Lombok? Używasz tej biblioteki w swoich projektach, czy wolisz pisać kod ręcznie? Podziel się swoim doświadczeniem w komentarzach!

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Przewijanie do góry