Lombok

Lombok이란?

Lombok은 Java에서 반복적으로 작성해야 하는 보일러플레이트(boilerplate) 코드를 자동으로 생성해주는 라이브러리입니다. 이를 통해 getter/setter, toString(), equals(), hashCode(), 생성자 등의 코드를 직접 작성할 필요 없이 간결한 코드로 유지할 수 있습니다.

Lombok을 사용하면 코드의 가독성이 향상되고 유지보수가 쉬워지며 컴파일 타임에 실제 메서드를 생성해주므로 성능에도 영향을 미치지 않습니다.

Lombok 설정 방법

Lombok 의존성 추가

Lombok을 사용하려면 pom.xml(Maven) 또는 build.gradle(Gradle)에 Lombok을 추가해야 합니다.

Maven 사용 시 (pom.xml)

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

Gradle 사용 시 (build.gradle)

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

IDE 설정

Lombok이 제대로 동작하려면 IDE에서 Lombok 플러그인을 설치해야 한다.

  • IntelliJ IDEA: File → Settings → Plugins → Lombok 검색 후 설치
  • Eclipse: Lombok 다운로드 후 lombok.jar를 실행하여 Eclipse에 적용

Lombok 주요 어노테이션

@Getter & @Setter

클래스 필드에 대한 getter 및 setter 메서드를 자동으로 생성해준다.

import lombok.Getter;
import lombok.Setter;

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

위 코드는 아래와 동일하다:

public class User {
    private String name;
    private int age;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

@ToString

toString() 메서드를 자동으로 생성해준다.

import lombok.ToString;

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

출력 예시:

User user = new User();
user.setName("John");
user.setAge(25);
System.out.println(user); // User(name=John, age=25)

@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor

생성자를 자동으로 생성할 때 사용한다.

import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;

@NoArgsConstructor // 기본 생성자
@AllArgsConstructor // 모든 필드를 포함한 생성자
@RequiredArgsConstructor // final 또는 @NonNull 필드만 포함한 생성자
public class User {
    private String name;
    private int age;
}

@EqualsAndHashCode

equals() 및 hashCode() 메서드를 자동으로 생성해준다.

import lombok.EqualsAndHashCode;

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

@Data

@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor를 한 번에 적용하는 종합 패키지 어노테이션.

import lombok.Data;

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

Lombok 사용 시 주의할 점

  1. IDE 설정이 필요함 → Lombok 플러그인을 반드시 설치해야 한다.
  2. 컴파일 타임에만 코드가 생성됨 → 빌드된 .class 파일에서만 getter, setter 등이 보인다.
  3. @Data는 신중하게 사용해야 함 → @EqualsAndHashCode도 포함되어 있기 때문에, 원치 않는 비교 로직이 생길 수 있다.

5. 결론

Lombok을 사용하면 Java 코드를 더 간결하고 가독성 있게 만들 수 있습니다.

getter/setter뿐만 아니라 toString(), equals(), hashCode(), 생성자 등의 반복적인 코드를 자동 생성해주는 다양한 어노테이션이 제공되므로, 개발 속도를 높이고 유지보수를 편하게 할 수 있습니다. 하지만 Lombok의 작동 방식과 제한점을 이해하고 신중하게 사용하는 것이 중요하기 때문에 적절하게 활용한다면 Java 개발의 효율성을 극대화할 수 있습니다.

'라이브러리' 카테고리의 다른 글

Tanstack Query  (4) 2024.10.02
Zustand  (2) 2024.09.25
axios Interceptors  (4) 2024.09.01
Jotai  (1) 2024.08.24
React Intersection Observer  (0) 2024.08.20