@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

Haechan Kim·2024년 2월 2일
0

Spring

목록 보기
54/68

Lombok 생성자 관련 어노테이션

예시 Customer 객체

public class Customer {
	private Long id;
	private String name;
	private int age;
}

@NoArgsConstructor

파라미터 없는 기본 생성자

Customer customer = new Cusmoner();

초기화 항상 필요한 final 붙은 필드 있을때 @NoArgsConstructor 사용 시 에러.
@NoArgsConstructor(force = true) 옵션 사용하면 모든 final 필드는 0, false, null로 초기화.

@RequiredArgsConstructor

특별한 처리 필요한 각 필드마다 하나의 파라미터 갖는 생성자 생성.
초기화 되지 않은 final 필드나 @NonNull 붙은 필드 생성해 줌.

@RequiredArgsConstructor
public class Customer {
    private final Long id;
    private String name;
    private int age;
}


Customer customer = new Customer(3L);

@AllArgsConstructor

클래스 내부 모든 필드값을 파라미터로 받는 생성자 생성.

주의 사항


@AllArgsConstructor
public class Order {
    private int cancelAmount;
    private int orderAmount;
}


// 취소수량 4개, 주문수량 5개
Order order = new Order(4, 5);

@AllArgsConstructor은 생성자 생성할 때 클래스에 있는 필드 순으로 생성자 파라미터를 생성.
그런데 추후에 cancelAmount와 orderAmount 선언 순서를 바꾼다면?
new Order(4, 5)는 잘못된 값 들어갔지만 에러없이 종작함.
-> 비지니스 로직 에러!

대신 @Builder를 사용하면 순서가 아닌 이름으로 값 설정하기 때문에 대응 가능.

Order.builder().orderAmount(5).cancelAmount(4).build();

0개의 댓글