JAVA SPRING 롬복 정리

Author
Description
Created at
Jul 1, 2025 07:26 AM
Tags
spring

📌 Java Spring Lombok 완전 정복

✅ 개요: Lombok이란?

Lombok은 Java에서 반복적으로 작성되는 보일러플레이트 코드를 자동 생성해주는 라이브러리입니다.
대표적으로 getter, setter, toString(), equals(), 생성자 등을 애너테이션 하나로 처리할 수 있어 생산성을 높이고 가독성을 향상시킵니다.

✅ Lombok 주요 애너테이션 정리

애너테이션
설명
@Getter
모든 필드 또는 개별 필드에 대한 getter 생성
@Setter
모든 필드 또는 개별 필드에 대한 setter 생성
@ToString
toString() 메서드 자동 생성
@EqualsAndHashCode
equals()hashCode() 자동 생성
@NoArgsConstructor
파라미터 없는 생성자 생성
@AllArgsConstructor
모든 필드를 포함한 생성자 생성
@RequiredArgsConstructor
final 또는 @NonNull 필드만 포함한 생성자 생성
@Data
@Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor 통합
@Builder
빌더 패턴 생성 지원
@Value
불변 객체 생성용. final, private, getter만 생성

✅ 핵심 차이점: @Getter, @Setter, @Data

항목
설명
생성되는 메서드
@Getter
모든 필드에 대한 getter 생성
getX()
@Setter
모든 필드에 대한 setter 생성
setX(value)
@Data
Getter + Setter + ToString + EqualsAndHashCode + RequiredArgsConstructor
위 모두 생성
@Data는 DTO 등에 편리하지만, 모든 메서드를 자동 생성하므로 민감 정보 또는 순환 참조 주의 필요

✅ 주요 애너테이션 사용 예시

1. @Getter, @Setter

@Getter @Setter 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; }

2. @Data

@Data public class User { private String name; private int age; }
→ 다음 메서드 자동 생성:
  • getName(), setName()
  • getAge(), setAge()
  • toString()
  • equals(Object o)
  • hashCode()
  • RequiredArgsConstructor도 생성됨

3. @Builder

@Builder public class Article { private Long id; private String title; private String content; }
→ 객체 생성 시 유연하게 활용 가능:
Article article = Article.builder() .id(1L) .title("Lombok Guide") .content("Details about Lombok") .build();

⚠️ 실무 시 주의사항

상황
주의 포인트
JPA Entity 클래스
@Data는 피해야 함 (양방향 연관관계 순환참조 위험)
@ToString 사용 시
예: @ToString(exclude = "orders") 로 순환 방지
DTO 클래스에 @Data 사용
OK. 순수 데이터 전달용으로는 매우 유용
불변 객체 필요 시
@Value 사용. 모든 필드는 final이 되고 setter는 생성되지 않음
민감 정보 포함 클래스
@ToString으로 정보 노출 위험 주의 필요 (로그에 노출될 수 있음)

✅ 추천 사용 패턴

상황
추천 애너테이션
DTO 클래스
@Data
Entity 클래스
@Getter, @Setter, @ToString(exclude = ...), @EqualsAndHashCode(exclude = ...)
생성자 주입 필요 시
@RequiredArgsConstructor 또는 @AllArgsConstructor
불변 객체 설계
@Value
빌더 패턴 사용
@Builder

✅ Lombok 설정 방법 (IDE & Gradle 기준)

Gradle 설정

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

IntelliJ 설정

  • Preferences > Plugins > Lombok Plugin 설치
  • Preferences > Build, Execution, Deployment > Compiler > Annotation ProcessorsEnable annotation processing 체크
 

✅ 마무리 정리

  • Lombok은 Java 코드의 생산성과 가독성을 높이는 필수 도구
  • DTO, VO, Entity 등 각 상황에 따라 적절한 애너테이션 조합이 중요
  • 자동 생성된 메서드가 코드에 미치는 영향과 유지보수성까지 고려할 것