Lombok을 사용했을 때, @Data
를 붙이면 기본생성자로 @NoArgsConstructor
를 생성해주는 줄 알았다.
그런데 누가 물어봐서 대답하려고 보니, 명확하게 모르는 것을 깨닫고 찾아보았다. 1
@Data
를 붙이게 되면, 일반적으로는 @NoArgsConstructor
를 만들어주는 것처럼 보인다.
하지만 엄밀히 말하면 @NoArgsConstructor
가 아니라 @RequiredArgsConstructor
가 생성된다.
즉, final
접근자가 붙어있거나 @Nonnull
애노테이션을 붙인 경우에는 해당 필드를 가진 생성자가 만들어진다.
보통의 경우는 final
이나 @Nonnull
이 없는 경우라서 @NoArgsConstructor
를 만들어 주는 것 같은 착시효과를 보일 뿐이다.