개발 일지/Spring

[Spring] @AllArgsConstructor /@RequiredArgsConstructor

미숫가루설탕많이 2023. 3. 16. 08:53

 @AllArgsConstructor와 @RequiredArgsConstructor는 롬복 라이브러리에서 제공되는 애너테이션으로 필드에 대한 생자를 자동으로 생성해주는 역할을 한다.

 

 @RequiredArgsConstructor는 필요에 의한 생성자를 만들어주는데 그럼 @AllArgsConstructor를 쓸 필요가 있나?? 라는 생각이 들어 찾아보니 두 애너테이션에 차이점이 있었다.

 

 @AllArgsConstructor는 '모든' 필드에 대한 생성자를 자동으로 생성해준다. 즉, 클래스의 모든 필드를 매개변수로 받는 생성자가 자동으로 생성된다.

 

 @RequiredArgsConstructor는 초기화 되어 있지 않은 'final' 필드나 @NonNull 애너테이션이 붙은 필드에 대한 생성자를 자동으로 생성해준다. 즉, 해당 필드들만 매개변수로 받는 생성자가 자동으로 생성된다.

 

 따라서, 이런 특성을 잘 고려하여 클래스에서 필요한 생성자를 잘 고려해서 애너테이션을 사용해야한다.