프로그래밍/- 남굼성의 Spring 교육

lombok @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor static 필드들은 스킵

즐겁게 하하하 2022. 2. 9. 01:36
728x90

@Getter/@Setter

 

메서드에 붙인다면, lombok이 해당 메서드에 대한 기본 getter/setter를 생성해줍니다.

클래스에 붙인다면, static은 제외한 전체 필드에 @Getter와 @Setter 애노테이션이 적용됩니다.

 

@Getter(AccessLevel.PUBLIC)

생성되는 getter/setter에 명시적으로 AccessLevel을 명시해주지 않으면, 접근 제한자는 public이 됩니다.

허용되는 access level들은 None, PUBLIC, PROTECTED, PACKAGE, PRIVATE가 있습니다.

 

 

@NoArgsConstructor 

파라미터가 없는 생성자를 생성합니다.

1. 필드들이 final로 생성되어 있는 경우, 필드를 초기화 할 수 없기 때문에 생성자를 만들 수 없고 에러가 발생합니다.

이 때는 @NoArgsConstructor(force = true) 옵션을 이용해서 final 필드를 0, false, null 등으로 초기화를 강제로 시켜서 생성자를 만들 수 있습니다.

 

2. @NonNull 같이 필드에 제약조건이 설정되어 있는 경우, 초기화를 진행하기 전까지 null-check 를 하지 않습니다.

 

@RequiredArgsConstructor

추가 작업을 필요로 하는 필드에 대한 생성자를 생성하는 애노테이션입니다.

초기화 되지 않은 모든 final 필드, @NonNull로 마크돼있는 모든 필드들에 대한 생성자를 자동으로 생성해줍니다.

 

@NonNull로 마크돼있는 필드들은 null-check를 하며, 파라미터에서 null값이 들어온다면 생성자에서 NullPointerException이 발생합니다.

 

@AllArgsConstructor 

클래스에 존재하는 모든 필드에 대한 생성자를 자동으로 생성해줍니다. 

만약 필드중에서 @NonNull 애노테이션이 마크되어 있다면 생성자 내에서 null-check 를 수행합니다.

 

 

728x90