Lombok
🧩 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와 함께 이해하면 사용 원리를 파악하기 쉽다.
댓글남기기