[Spring Boot] 생성자 어노테이션(@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor)

·2025년 6월 5일
0

Spring Boot

목록 보기
6/6

💡생성자 자동 생성 어노테이션

@NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor 는 Lombok에서 제공하는 생성자 자동 생성 어노테이션이다. 각 어노테이션의 차이점을 알아보겠다.


✅@NoArgsConstructor

  • 기본 생성자(파라미터가 없는 생성자)를 자동 생성한다

📍예시

@NoArgsConstructor
public class User {
   private String name;
   private int age;
}

📍결과

public User() {}

📌JPA Entity에서는 필수이다. → 프록시 생성을 위해 기본생성자 필요


✅@AllArgsConstructor

  • 모든 필드를 인자로 받는 생성자를 자동 생성한다

📍예시

@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

📍결과

public User(String name, int age) {
    this.name = name;
    this.age = age;
}

📌DTO나 VO등에서 자주 사용 된다.


✅@RequiredArgsConstructor

  • final필드 또는 @NonNull 필드만 파라미터로 받는 생성자 생성

📍예시

@RequiredArgsConstructor
public class UserService {
    private final UserRepository userRepository;
    private String name;
}

📍결과

public UserService(UserRepository userRepository) {
    this.userRepository = userRepository;
}

📌스프링에서 생성자 주입용으로 가장 자주 사용된다
@Service @Component 클래스에서 주로 사용


📗정리

어노테이션생성자 파라미터주요 사용처
@NoArgsConstructor없음JPA Entity, 직렬화 필요 시
@AllArgsConstructor모든 필드DTO, 테스트용 객체 생성
@RequiredArgsConstructorfinal 또는 @NonNull 필드만 포함의존성 주입 (DI) 클래스
profile
배우고 기록하며 성장하는 백엔드 개발자입니다!

0개의 댓글