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.