Lombok은 Java 개발에서 반복되는 코드를 자동으로 생성해주는 라이브러리입니다.
생성자, Getter/Setter, equals/hashCode 등 자주 쓰이는 코드를 줄여서 생산성을 높여주는 데 큰 도움이 됩니다.
Lombok에서 자주 사용하는 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor에 대해 알아보자.
1. @NoArgsConstructor
- 역할: 파라미터가 없는 기본 생성자를 자동으로 생성
- 예시 코드:
import lombok.NoArgsConstructor;
@NoArgsConstructor
public class User {
private Long id;
private String name;
}
- 장점:
- JPA 엔티티처럼 프레임워크가 기본 생성자를 필요로 하는 경우 자동 생성해주어 코드가 간결해짐.
2. @RequiredArgsConstructor
- 역할: final 혹은 @NonNull이 붙은 필드만 파라미터로 받는 생성자를 자동 생성
- 예시 코드:
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public class Product {
@NonNull
private final String productName; // 생성자 파라미터로 자동 생성
private int stockAmount;
}
- 장점:
- 꼭 필요한 필드만 초기화하도록 강제할 수 있어 불변성 유지에 유리
- 어떤 필드들이 꼭 필요한 의존성인지 한눈에 확인 가능
3. @AllArgsConstructor
- 역할: 모든 필드를 파라미터로 받는 생성자를 자동으로 생성
- 예시 코드:
import lombok.AllArgsConstructor;
@AllArgsConstructor
public class Order {
private Long orderId;
private String itemName;
private int quantity;
}
- 장점:
- 테스트 시 모든 필드를 세팅할 때 매우 편리
- DTO나 단순 데이터 객체에서 사용하기 좋음
'개념정복💫 > 스프링 Spring 정복' 카테고리의 다른 글
JPA 일대일(OneToOne) 관계 매핑 (0) | 2025.02.23 |
---|---|
즉시 로딩(EAGER)과 지연 로딩(LAZY), 언제 어떤 전략을 써야 할까? (1) | 2025.02.23 |
JPA 페치 타입: 즉시 로딩(EAGER)과 지연 로딩(LAZY) (0) | 2025.02.23 |
@EntityListeners(AuditingEntityListener.class)란? (4) | 2025.02.22 |
JPA 엔티티 날짜/시간 자동 설정 (0) | 2025.02.22 |