@NoArgsConstructor@AllArgsConstructor@RequiredArgsConstructor는 Lombok에서 제공하는 생성자 자동 생성 어노테이션이다. 각 어노테이션의 차이점을 알아보겠다.
@NoArgsConstructor
public class User {
private String name;
private int age;
}
public User() {}
📌JPA Entity에서는 필수이다. → 프록시 생성을 위해 기본생성자 필요
@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
public class UserService {
private final UserRepository userRepository;
private String name;
}
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
📌스프링에서 생성자 주입용으로 가장 자주 사용된다
→@Service@Component클래스에서 주로 사용
| 어노테이션 | 생성자 파라미터 | 주요 사용처 |
|---|---|---|
@NoArgsConstructor | 없음 | JPA Entity, 직렬화 필요 시 |
@AllArgsConstructor | 모든 필드 | DTO, 테스트용 객체 생성 |
@RequiredArgsConstructor | final 또는 @NonNull 필드만 포함 | 의존성 주입 (DI) 클래스 |