[Builder] 생성자 어노테이션

2021. 9. 5. 22:42개발공부/Java

728x90

Builder와 생성자

1) @Builder란?

@Builder Lombok 문서를 보면 명시적 생성자가 없을 경우에 @AllArgsConstructor를 package-private 타입으로 자동생성 한다고 나와있습니다.

그래서 명시적 생성자가 있지만 @AllArgsConstructor가 없다면 @Builder에 의해 에러가 발생될 것입니다. 따라서 @NoArgsConstructor와 같은 명시적 생성자 어노테이션을 붙일 땐 반드시 @AllArgsConstructor도 함께 명시해줘야 합니다.

2) @AllArgsConstructor란?

Lombok 문서를 보면 @AllArgsConstructor generates a constructor with 1 parameter for each field in your class. Fields marked with @NonNull result in null checks on those parameters.라고 나와있습니다. 즉, 하나의 파라미터만 가진 생성자를 만들어주며 그 파라미터엔 해당 클래스의 모든 필드들이 들어간다.라고 이해할 수 있습니다.


public class Parents {

    private String name;
    private int age;

    public Parents(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

이외에 @RequiredArgsConstructor는 특수 처리가 필요한 final, @NonNull 필드들을 1개의 파라미터를 가진 생성자를 만들어주며
@NoArgsConstructor는 파라미터가 없는 기본 생성자를 만들어 주는 Lombok 어노테이션 입니다.


참고자료:

'개발공부 > Java' 카테고리의 다른 글

[JPA] @Embedded 와 @Embeddable  (0) 2021.10.08
[Supplier] What is Java 8 Supplier interface?  (0) 2021.09.11
[Java] Java Stream(스트림)  (0) 2021.09.03
(23) Mybatis - resultMap  (0) 2021.06.02
(22) defaultIfNull  (0) 2021.03.19