Getting Started with Lombok in Java

1 min read

Getting Started with Lombok in Java

Project Lombok is a Java library that helps reduce boilerplate code. It uses annotations to generate commonly used code like getters, setters, constructors, and more at compile time.


1. Adding Lombok to Your Project

Maven

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.30</version>
    <scope>provided</scope>
</dependency>

Gradle

dependencies {
    compileOnly 'org.projectlombok:lombok:1.18.30'
    annotationProcessor 'org.projectlombok:lombok:1.18.30'
}

Also make sure your IDE has the Lombok plugin installed and annotation processing enabled.


2. Common Lombok Annotations

@Getter and @Setter

Generates getter and setter methods.

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class User {
    private String name;
    private int age;
}

@ToString

Generates a toString() method.

import lombok.ToString;

@ToString
public class Product {
    private String name;
    private double price;
}

@EqualsAndHashCode

Generates equals() and hashCode() methods.

import lombok.EqualsAndHashCode;

@EqualsAndHashCode
public class Employee {
    private int id;
    private String department;
}

@NoArgsConstructor, @AllArgsConstructor, and @RequiredArgsConstructor

import lombok.*;

@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class Book {
    private String title;
    private String author;
    private final String isbn;
}

@Data

A shortcut for @Getter, @Setter, @ToString, @EqualsAndHashCode, and @RequiredArgsConstructor.

import lombok.Data;

@Data
public class Customer {
    private String name;
    private int age;
}

@Builder

Creates a builder pattern.

import lombok.Builder;

@Builder
public class Car {
    private String make;
    private String model;
    private int year;
}

@Slf4j

Adds a logger instance named log.

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class LoggerExample {
    public void logSomething() {
        log.info("Logging with Lombok");
    }
}

3. Full Example

User.java

import lombok.*;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class User {
    private Long id;
    private String username;
    private String email;
}

Main.java

public class Main {
    public static void main(String[] args) {
        // Using builder
        User user = User.builder()
                        .id(1L)
                        .username("john_doe")
                        .email("john@example.com")
                        .build();

        System.out.println(user);

        // Using getters and setters
        user.setUsername("jane_doe");
        System.out.println("Updated Username: " + user.getUsername());
    }
}

4. Advantages of Using Lombok

  • Reduces boilerplate code.
  • Improves readability and maintainability.
  • Encourages immutability with annotations like @Value.

5. Potential Drawbacks

  • May introduce confusion for developers unfamiliar with Lombok.
  • Requires IDE support for full experience.
  • Can obscure what’s actually being compiled.

Conclusion

Lombok is a powerful tool for simplifying Java development by automating boilerplate code. It allows you to focus more on business logic and less on repetitive coding tasks. By understanding and using Lombok annotations effectively, you can write cleaner and more maintainable code.

🤞 Never miss a story from us, get weekly updates to your inbox!