개발 일지/Spring
[Spring] @AllArgsConstructor /@RequiredArgsConstructor
미숫가루설탕많이
2023. 3. 16. 08:53
@AllArgsConstructor와 @RequiredArgsConstructor는 롬복 라이브러리에서 제공되는 애너테이션으로 필드에 대한 생자를 자동으로 생성해주는 역할을 한다.
@RequiredArgsConstructor는 필요에 의한 생성자를 만들어주는데 그럼 @AllArgsConstructor를 쓸 필요가 있나?? 라는 생각이 들어 찾아보니 두 애너테이션에 차이점이 있었다.
@AllArgsConstructor는 '모든' 필드에 대한 생성자를 자동으로 생성해준다. 즉, 클래스의 모든 필드를 매개변수로 받는 생성자가 자동으로 생성된다.
@RequiredArgsConstructor는 초기화 되어 있지 않은 'final' 필드나 @NonNull 애너테이션이 붙은 필드에 대한 생성자를 자동으로 생성해준다. 즉, 해당 필드들만 매개변수로 받는 생성자가 자동으로 생성된다.
따라서, 이런 특성을 잘 고려하여 클래스에서 필요한 생성자를 잘 고려해서 애너테이션을 사용해야한다.