Lombok에서 제공하는 어노테이션 @RequiredArgsConstructor,@AllArgsConstructor,@NoArgsConstructor 클래스의 생성자를 자동 생성해주는 공통점이 존재한다.
변경할 수 없는 필드의 생성자를 자동으로 생성public class Member{
private Long id; // 변환 가능한 변수이므로 생성자 생성x
private final String username;
private final String email;
// @RequiredArgsConstructor 사용시 생략가능
public Member(String username, String email) {
this.username = username;
this.email = email;
}
}
모든 필드의 생성자를 자동으로 생성public class Member{
private Long id; // 변환 가능한 변수이므로 생성자 생성x
private final String username;
private final String email;
// @AllArgsConstructor 사용시 생략가능
public Member(Long id ,String username, String email) {
this.id = id;
this.username = username;
this.email = email;
}
}
기본 생성자를 자동으로 생성public class Member{
private Long id; // 변환 가능한 변수이므로 생성자 생성x
private String username;
private String email;
// @NoArgsConstructor 사용시 생략가능
public Member() {
}
}
💡 @NoArgsConstructor 사용시 주의사항
final 필드가 포함되어 있는 경우 초기화가 되지 않으므로 오류 발생!
따라서 final이 존재할 경우 @NoArgsConstructor(force = true)를 사용하여 강제 초기화가 필요함
@NoArgsConstructor(force = true)
public class Member{
// null로 초기화
private final String username;
private final String email;
}