[Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
by 코박7NoArgsconstructor 어노테이션
- 해당 어노테이션의 개념부터 잡아보겠다.
- 개념은 파라미터가 없는 기본 생성자를 생성한다.
그래서 어떻게 사용하는건데 ?
- 코드로 예시를 들어보자
@NoArgsConstructor
public class Student {
private Long id;
private String name;
public Student(Long id, String name) {
this.id = id;
this.name = name;
}
void result() {
System.out.println("출석 번호:" + id + "이름:" + name);
}
}
class Run {
public static void main(String[] args) {
Student student = new Student();
student.result();
}
}
Student 에는 id 와 name 을 초기화하는 생성자 메서드가 있다.
때문에 id 와 name 을 넘겨주지 않으면 컴파일 에러가 나는게 맞다.
하지만 @NoArgsconstructor 덕분에 파라미터를 넘겨주지 않아도 기본 생성자를 생성한다.
RequiredArgsConstructor 어노테이션
- 해당 어노테이션의 개념은 final 이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 생성한다.
그래서 어떻게 사용하는데 ?
@RequiredArgsConstructor
public class Student {
private Long id;
private String name;
void result() {
System.out.println("출석 번호:" + id + "이름:" + name);
}
}
class Run {
public static void main(String[] args) {
Student student = new Student(1L, "홍길동");
student.result();
}
}
- final 이나 NonNull 인 필드 값만 파라미터로 받는 생성자를 생성하기 때문에 위 코드는 컴파일 에러가 뜬다.
- 컴파일 에러를 해결하기 위해선 @NonNull 어노테이션을 사용해준다.
@RequiredArgsConstructor
public class Student {
@NonNull
private Long id;
@NonNull
private String name;
void result() {
System.out.println("출석 번호:" + id + "이름:" + name);
}
}
class Run {
public static void main(String[] args) {
Student student = new Student(1L, "홍길동");
student.result();
}
}
AllArgsConstructor 어노테이션
- 개념은 모든 필드 값을 파라미터로 받는 생성자를 생성한다.
@AllArgsConstructor
public class Student {
private Long id;
private String name;
void result() {
System.out.println("출석 번호:" + id + "이름:" + name);
}
}
class Run {
public static void main(String[] args) {
Student student = new Student(1L, "홍길동");
student.result();
}
}
- 생성자 메소드를 작성하지 않아도 이 어노테이션만 적용하면 생성자 메소드 작업을 줄일 수 있다.
'spring' 카테고리의 다른 글
[Spring] Discovery Eureka Client 란 (0) | 2023.09.10 |
---|---|
[Spring] Discovery Server (Eureka Server) 란 ? (0) | 2023.09.10 |
[Spring] 간단하게 POST 요청 보내기 (2) | 2023.07.25 |
[Spring] CORS 란? CORS 해결 (0) | 2023.07.13 |
[Spring] Embedded kafka 테스트 진행 (0) | 2023.07.07 |
블로그의 정보
코딩박스
코박7