@RequiredArgsConstructor
가 동작하는 방식을 알아본다.
@NoArgsConstructor
, @RequireArgsConstructor
, @AllArgsConstructor
#
@NoArgsConstructor
#
- 파라미터가 없는 생성자를 만든다.
final
필드가 있어서 불가능한 경우는 컴파일 오류가 발생한다.@NoArgsConstructor(force=true)
옵션을 줄 경우, 컴파일 오류가 발생하지 않고 모든 final
필드를 0
, false
, null
로 초기화한다.@NonNull
이 붙어있는 어노테이션이 붙어있어도 검사하지 않으므로 유의해야된다.
@RequiredArgsConstructor
#
final
필드나 @NonNull
이 붙어있는 필드 중에 초기화 되지 않은 필드들을 파라미터로 가지는 생성자를 만든다.- 이 경우에는
@NonNull
이 붙어있으면 널 검사를 하기 때문에, 생성자 파라미터에 null이 있으면 NullPointerException
이 발생한다.
@AllArgsConstructor
#
- 모든 필드에 대해 파라미터를 가지는 생성자를 만든다.
@NonNull
이 붙어 있으면 널 검사를 한다.
필드에 붙어 있는 애노테이션을 생성자 파라미터에 넘겨주기#
- Spring 프레임워크 사용시
@Value
가 붙어있는 필드에 대해서 롬복으로 생성자를 만들면 생성자 파라미터에 @Value
가 붙지 않는다. - 이는 롬복 설정을 통해서 해결할 수 있다.
lombok.copyableAnnotations += org.springframework.beans.factory.annotation.Value
참고 자료#