본문 바로가기

Springあるある

@RequiredArgsConstructor vs @AllArgsConstructor

@RequiredArgsConstructor는 다음과 같은 방식으로 생성자를 생성합니다.

  • 필드 선택:
    • 초기화되지 않은 final 필드
    • 선언 시 초기화되지 않은 @NonNull로 표시된 필드
  • 생성자 매개변수:
    • 위 조건에 해당하는 필드들만 매개변수로 가지는 생성자를 생성합니다.
  • null 체크:
    • @NonNull 로 표시된 필드에 대해 null 체크를 수행하며, null 값이 전달되면 NullPointerException을 발생시킵니다.
  • 매개변수 순서:
    • 생성자 매개변수의 순서는 클래스 내에서 필드가 선언된 순서를 따릅니다.

 

 

 

@AllArgsConstructor 는 다음과 같은 방식으로 생성자를 생성합니다.

  • 필드 선택:
    • 클래스의 모든 필드가 매개변수로 포함됩니다.
  • null 체크:
    • @NonNull로 표시된 필드에 대해 null 체크를 수행하며, null 값이 전달되면 NullPointerException을 발생시킵니다.

 

 

import lombok.AllArgsConstructor;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

public class AnnotationTest {

    @AllArgsConstructor
    public static class AllArgsConstructorDto {
        private String field_1;
        @NonNull
        private String field_2;
        private final String field_3;
        private final String field_4;
    }

    @RequiredArgsConstructor
    public static class RequiredArgsConstructorDto {
        private String field_5;
        @NonNull
        private String field_6;
        private final String field_7;
        private final String field_8;
    }
}