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