
안녕하세요!
오늘은 @NoArgsConstructor 와 @AllArgsConstructor, @ RequiredArgsConstructor 개념에 대해 정리해보겠습니다.
위 세 가지는 모두 생성자를 자동으로 만들어주는 어노테이션입니다.
차이점은 어떤 값을 파라미터로 받는가 입니다.
@NoArgsConstructor
명시적으로 생성자를 선언해주지 않아도 파라미터가 없는 디폴트 생성자를 생성해줍니다.
@NoArgsConstructor
public class Member {
private Long id;
private String name;
}
// -> 아래와 같은 코드
public class Member {
private Long id;
private String name;
public Member(){}
}
@NoArgsConstructor는 accessLevel (접근 제한자) 을 설정할 수 있습니다.

그리고 개발자분들은 이 중에서도 protected를 선호합니다.
이는 proxy 때문인데, 조만간 꼭 정리해보는 시간을 갖겠습니다..!
@AllArgsConstructor
클래스 내 모든 필드 값을 파라미터로 받는 생성자를 생성해줍니다.
모든 필드를 한 번에 초기화 해야 할 때 사용하기 좋습니다.
@AllArgsConstructor
public class Member {
private Long id;
private String name;
}
// -> 아래와 같은 코드
public class Member {
private Long id;
private String name;
public Member(Long id, String name) {
this.id = id;
this.name = name;
}
}
@RequiredArgsConstructor
final 혹은 @NonNull로 선언된 필드만 파라미터로 받는 생성자를 생성합니다.
클래스가 의존하는 필드를 쉽게 초기화할 수 있다는 장점이 있습니다.
@RequiredArgsConstructor
public class Member {
private Long id;
private final String name;
private final int age;
}
// -> 아래와 같은 코드
public class Member {
private Long id;
private final String name;
private final int age;
public Member(final String name, final int age) {
this.name = name;
this.age = age;
}
}
정리
- @NoArgsConstructor : 파라미터가 없는 디폴트 생성자 생성
- @AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자 생성
- @RequiredArgsConstructor : final 혹은 @NonNull이 선언된 필드만 파라미터로 받는 생성자 생성
💛 Reference
'서버 공부' 카테고리의 다른 글
| [스프링] 이미지와 함께 게시물 작성하기 (0) | 2024.06.25 |
|---|---|
| [스프링] 글 작성 API : 이미지 업로드 API와 글쓰기 API 따로 생성하기 (0) | 2024.06.13 |
| [스프링] S3를 이용한 이미지 업로드 (0) | 2024.06.13 |
| [스프링] org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request 해결 방법 (0) | 2024.06.13 |
| Access Token & Refresh Token (0) | 2024.05.30 |