1) @NoArgsConstructor
기능: 파라미터 없는 기본 생성자 생성
2) @RequiredArgsConstructor
기능: final 또는 @NonNull 필드만 파라미터로 받는 생성자 생성
언제 쓰나
Spring DI(생성자 주입) 최적 → 의존성은 final로 두고 이 어노테이션만 붙이면 됨
단일 생성자면 Spring은 @Autowired 없이도 주입
3) @AllArgsConstructor
기능: 모든 필드를 파라미터로 받는 생성자 생성
언제 쓰나
DTO나 값 전달 객체에 편리
엔티티에서는 남용 금지(불변식/비즈니스 규칙 무시 위험), 필요 시 가시성 낮추기
a , c dto 클래스의 필드를 가지고 b dto 클래스 생성자를 만들고 싶은데, a,c의 일부 필드만 사용하고 싶을 경우 대상 필드를 별도 클래스로 생성한다.
각 Request DTO에서 이 클래스를 꺼낼 수 있게 구성
class A {
string a;
string b;
string c;
b createBDto (){
return new b(a,b,c);
}
}
class C {
string a;
string b;
string d;
b createBDto (){
return new b(a,b,d);
}
}
이렇게 각 dto 클래스에 b dto 생성 메소드 만든 후 a.createBDto(), c.createBDto() 이렇게 처리 가능하다.