코딩박스

[Spring] @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

by 코박7

NoArgsconstructor 어노테이션

  • 해당 어노테이션의 개념부터 잡아보겠다.
  • 개념은 파라미터가 없는 기본 생성자를 생성한다.

 

그래서 어떻게 사용하는건데 ?

  • 코드로 예시를 들어보자
@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();
    }
}
  • 생성자 메소드를 작성하지 않아도 이 어노테이션만 적용하면 생성자 메소드 작업을 줄일 수 있다.

블로그의 정보

코딩박스

코박7

활동하기