@RequiredArgsConstructor

지찬우·2023년 2월 7일
0

Knowing

목록 보기
5/10
post-thumbnail

굉장히 별 건 아니지만 오늘 문득 이 애노테이션을 추가했을 때 어떤 방식으로 작동하는지 궁금해졌다. 평소에는 아무 생각 없이 사용하다가 갑자기 궁금증이 생겼다. 우리가 의존관계를 주입받을 때 보통 직접 생성자를 추가하여 주입받는 방식보다는 롬복의 @RequiredArgsConstructor 애노테이션을 사용해 주입받는 방식으로 깔끔하게 작성한다. 애노테이션의 뜻이 대충 ‘필수적인 인수 생성자’라는 뜻인 거 같다. @NoArgsConstructor, @AllArgsConstructor와 같은 맥락의 애노테이션인 것 같다.

평소에 얼마나 생각 없이 사용했으면 오늘 처음 알았다. 맨날 Requi 정도까지만 입력하고 Tab 버튼으로 자동완성을 사용했으니 그럴 만도 하다.. 생성자를 만들어 주는 애노테이션인 것이다.

https://projectlombok.org/features/constructor

이전에도 자주 방문했던 Project Lombok 사이트이다. 여기에도 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor가 한 페이지에 설명되어 있다.

그래서 @RequierdArgsConstructor는 어떤 생성자를 만들어 주느냐.

final 키워드가 붙은 초기화되지 않은 필드나, @NonNull 애노테이션이 붙은 초기화되지 않은 필드를 매개변수로 받는 생성자를 만들어 준다.

그래서 final 키워드를 제거하고 애플리케이션을 실행시켜 테스트해보았는데, 주입되지 않아서 NPE이 발생하는 것을 확인할 수 있었다.

profile
좋은 개발자가 되자.

0개의 댓글