공부공부/Java
[Lombok] @RequiredArgsConstructor / @NoArgsConstructor / @AllArgsConstructor
이숭간
2021. 5. 22. 16:31
728x90
@RequiredArgsConstructor
초기화되지 않은 final필드나, @NonNull이 붙은 필드에 대해 생성자를 생성해준다.
주로 의존성 주입 편의성을 위해 사용된다.
해당 어노테이션으로 의존성주입이 가능한이유는 다음과 같다.
- 어떠한 빈에 생성자가 오직 하나만 있고 생성자의 파라미터 타입이 빈으로 등록가능한것이면 이 빈은 @Autowired없이도 의존성주입이 가능
즉, 생성자 안만들고 생성자주입이 가능하다!!
@NoArgsConstructor
파라미터가 없는 기본생성자를 생성해준다.
사용시 주의점
1. 필드들이 final로 생성되어있는 경우에는 필드를 초기화할수 없기 때문에 생성자를 만들수 없고 에러가발생
(final키워드가 붙은 필드들은 선언과동시에 초기화하고 이후에 값을 수정할수 없으니까)
이 때는 @NoArgsConstructor(force = true) 옵션을 이용해서 final 필드를 0, false, null 등으로 초기화를 강제로 시켜서 생성자를 만들 수 있습니다.
2. @NonNull과 같이 필드에 제약조건이 설정되어있는 경우, 생성자내 null-check로직이 생성되지 않는다.
@AllArgsConstructor
클래스에 존재하는 모든 필드를 포함하는 생성자를 자동으로 생성해준다.
참고링크