TIL

[TIL] 생성자 관련 어노테이션 @NoArgsConstructor @RequiredArgsConstructor @AllArgsConstructor

봄봄로그 2023. 7. 4. 22:53

별거아닌 기본인데 자꾸만 헷갈려서 안되겠다.. 내가보려고 써놓는 간단한 정리

 

@NoArgsConstructor

- 기본생성자를 만든다.

- public Member() {}

 

@RequiredArgsConstructor

- 선언된 모든 final필드가 포함된 생성자를 생성한다.

- final이 없는 필드는 생성자에 포함되지 않는다.

 

@Autowired를 사용하지 않고 이렇게 사용하는 것을 권장한다.

@RequiredArgsConstructor
@Controller
public class IndexController {
    
    private final PostsService postsService;
    
    ...
    
}

 

 

@AllArgsConstructor 

- 선언된 모든 필드의 생성자를 생선한다.

 

만약 DTO클래스 내부에서 생성자를 만들고 @Builder 를 사용한다면? 이 @AllArgsConstructor  사용할 일이 없겠지. 그리고 이 어노테이션을 사용하는 것 보다 생성자를 만드는 것을 더 권장한다고 한다.!

 

@Getter
@NoArgsConstructor
public class PostsSaveRequestsDto {
    private String title;
    private String content;
    private String author;

    @Builder
    public PostsSaveRequestsDto(String title, String content, String author) {
        this.title = title;
        this.content = content;
        this.author = author;
    }