[Spring] @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 생성자 어노테이션 개념

2022. 8. 9. 18:49Web/Spring

스프링을 공부하면서 조금씩 기능을 파악하던 도중 lombok라이브러리에 있는 생성자를 만들어주는 어노테이션들을 알게되었다. 세 가지의 종류가 존재하며 이를 토대로 각자 어떤 상황에는 어떤 어노테이션을 써야하는지  정리하고자 한다. 

Lombok 어노테이션 ( Getter / Setter / Data / (No / All / Required ) Constructor... etc)를 잘 모르고 사용하게 된다면 에러를 발생시키는데 그중에서 Constructor 어노테이션에 대해 정리하려한다.

 

해당 코드는 Web todo를 만들 때 사용하였던 UserDTO다. 기록을 위해 해당 객체에 조금의 수정을 해서 가져왔다.

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
public class UserDTO {
    @NotNUll
    private String email;
    private String password;
    private String id;
}

 

@NoArgsConstructor 

파라미터가 없는 기본 생성자를 생성한다.

초기값에 final 지정 변수가 있을 경우 추후에 컴파일 에러가 발생한다.

UserDTO user = new UserDTO();

 

@AllArgsConstructor

모든 필드값을 파라미터로 받는 생성자를 생성한다.

UserDTO user = new UserDTO("mxxxxx222@gamil.com" , "skyriv" , "asdf12");

 

@RequiredArgsConstructor 

final, NotNull등의 표시가 된 필드 값만 파라미터로 받는 생성자를 생성한다.

이번 경우에는 email값만 표시가 되었기에 email 값만 넣어주면 된다.

UserDTO user = new UserDTO("asdjka@gmail.com");