🧩 Lombok

정의

Lombok반복되는 보일러플레이트 코드를 애너테이션으로 줄여주는 Java 라이브러리이다. getter, setter, 생성자, toString, equals, hashCode 같은 코드를 자동 생성한다.

코드를 더 짧고 읽기 쉽게 만들어서 가독성과 유지보수성을 높이는 데 도움이 된다.

🧩 역할

  • 반복 코드 생성을 줄인다
  • 보일러플레이트를 감소시킨다
  • 엔티티와 DTO 코드를 간결하게 만든다
  • 애너테이션 기반으로 생성 코드를 관리한다

🛠 주요 애너테이션

애너테이션 대상 기능
@Getter Class, Field getter를 생성한다
@Setter Class, Field setter를 생성한다
@ToString Class toString()을 생성한다
@NoArgsConstructor Class 기본 생성자를 생성한다
@AllArgsConstructor Class 전체 필드를 받는 생성자를 생성한다
@RequiredArgsConstructor Class final 또는 @NonNull 필드를 받는 생성자를 생성한다
@EqualsAndHashCode Class equals(), hashCode()를 생성한다
@Data Class Getter, Setter, RequiredArgsConstructor, toString, equals, hashCode를 생성한다
@Builder Class Builder 패턴을 적용한다
@SuperBuilder Class 상속 구조까지 포함한 Builder를 생성한다

🛠 적용 방법

Gradle 의존성

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

IDE 설정

  • IntelliJ에서 Annotation Processing을 활성화해야 한다.
  • 컴파일 시 생성 코드가 정상적으로 인식되는지 확인해야 한다.

🛠 사용 예시

@Data
public class User {
    private Integer userSeq;
    private String id;
    private LocalDate registTime;
    private LocalDate lastLoginTime;
}

🧩 특징

  • 코드량을 줄일 수 있다
  • DTO, VO, 단순 모델에서 특히 유용하다
  • 컴파일 시점에 코드가 생성된다
  • AnnotationProcessor와 함께 동작한다

⚠️ 주의사항

  • JPA Entity에 @Data를 무분별하게 쓰면 문제가 생길 수 있다.
  • equals(), hashCode(), toString()이 연관관계 필드와 충돌할 수 있다.
  • @Builder와 생성자 애너테이션은 의도를 보고 선택해야 한다.
  • IDE와 빌드 설정이 맞지 않으면 생성 코드가 보이지 않을 수 있다.

📌 정리

  • Lombok은 반복 코드를 줄여주는 Java 라이브러리다.
  • 애너테이션으로 getter, setter, 생성자, builder 등을 자동 생성한다.
  • AnnotationProcessor와 함께 이해하면 사용 원리를 파악하기 쉽다.

연결문서

댓글남기기