Lombok 생성자 관련 어노테이션
예시 Customer 객체
public class Customer {
private Long id;
private String name;
private int age;
}
파라미터 없는 기본 생성자
Customer customer = new Cusmoner();
초기화 항상 필요한 final 붙은 필드 있을때 @NoArgsConstructor 사용 시 에러.
@NoArgsConstructor(force = true) 옵션 사용하면 모든 final 필드는 0, false, null로 초기화.
특별한 처리 필요한 각 필드마다 하나의 파라미터 갖는 생성자 생성.
초기화 되지 않은 final 필드나 @NonNull 붙은 필드 생성해 줌.
@RequiredArgsConstructor
public class Customer {
private final Long id;
private String name;
private int age;
}
Customer customer = new Customer(3L);
클래스 내부 모든 필드값을 파라미터로 받는 생성자 생성.
@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();