[Java][Lombok] @Builder와 @NoArgsConstructor (미완)

jhkim·2022년 10월 12일
0

Java

목록 보기
2/3

https://velog.io/write?id=f38b248b-9fad-4b9c-a4a6-0b6594e6e6fc
Builder에 대한 설명은 위 링크 참조

Builder와 NoArgsConstructor

@NoargsConstructor는 파라미터가 없는 생성자를 만들어준다. 이 때 force의 디폴트는 @NoArgsConstructor(force=true)이다. 필드가 초기화되지 않을 경우 자동으로 0/false/null로 초기화한다. 필드를 초기화하지 않으면서 force를 false로 할 경우 에러가 발생한다.



@NoArgsConstructor
public class TestClass {
    private String name;
    private int id;

    TestClass(int num) {
        id=num;
    }
}
//main
TestClass test = new TestClass();

@NoArgsConstructor를 달지 않았으면 기본 생성자가 생성되지 않아 컴파일 에러가 나지만, 어노테이션을 붙여 문제 없이 돌아간다.






Entity나 DTO에 @NoArgsConstructor(access = AccessLevel.PROTECTED)를 추가하는 이유는 뭘까?

@NoArgsConstructor
@Setter
public class Student {
    private String name;
    private String id;
    private int age;
}
public class Main {
    public static void main(String[] args) {

        Student student = new Student();
        student.setName("이름");
    }
}

이 경우, 이름만 설정했으므로 객체는 불완전하다.

@Builder와 같이 쓴다면 에러가 난다.
왜일까?
@Builder는 자동으로 @Builder클래스를 생성해주고,
이 Builder의 동작 방식은

https://velog.io/@cieroyou/Builder-%EC%82%AC%EC%9A%A9%EB%B2%95
잘 설명된 글이 있어 우선 첨부하고 임시저장!

[참고]
https://hongdosan.tistory.com/entry/Spring-NoargsConstructorAccessLevelPROTECTED-Builder

0개의 댓글

관련 채용 정보