생성자

박의진·2025년 8월 6일

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() 이렇게 처리 가능하다.

profile
주니어 백엔드 개발자의 개발 log💻

0개의 댓글