굉장히 별 건 아니지만 오늘 문득 이 애노테이션을 추가했을 때 어떤 방식으로 작동하는지 궁금해졌다. 평소에는 아무 생각 없이 사용하다가 갑자기 궁금증이 생겼다. 우리가 의존관계를 주입받을 때 보통 직접 생성자를 추가하여 주입받는 방식보다는 롬복의 @RequiredArgsConstructor
애노테이션을 사용해 주입받는 방식으로 깔끔하게 작성한다. 애노테이션의 뜻이 대충 ‘필수적인 인수 생성자’라는 뜻인 거 같다. @NoArgsConstructor
, @AllArgsConstructor
와 같은 맥락의 애노테이션인 것 같다.
평소에 얼마나 생각 없이 사용했으면 오늘 처음 알았다. 맨날 Requi
정도까지만 입력하고 Tab 버튼으로 자동완성을 사용했으니 그럴 만도 하다.. 생성자를 만들어 주는 애노테이션인 것이다.
이전에도 자주 방문했던 Project Lombok 사이트이다. 여기에도 @NoArgsConstructor
, @RequiredArgsConstructor
, @AllArgsConstructor
가 한 페이지에 설명되어 있다.
그래서 @RequierdArgsConstructor
는 어떤 생성자를 만들어 주느냐.
final
키워드가 붙은 초기화되지 않은 필드나,@NonNull
애노테이션이 붙은 초기화되지 않은 필드를 매개변수로 받는 생성자를 만들어 준다.
그래서 final
키워드를 제거하고 애플리케이션을 실행시켜 테스트해보았는데, 주입되지 않아서 NPE
이 발생하는 것을 확인할 수 있었다.