@Builder 사용법

greenTea·2023년 3월 18일

@Builder는 롬복에 있는 어노테이션으로 객체 생성시에 편리함을 제공해준다.

롬복 적용 방법

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Builder
@AllArgsConstructor
@Getter
@Setter
public class Person {
    private String name;
    private String mother;
    private String father;
}

builder로 생성

Person person = Person.builder()
                      .name("John")
                      .father("father")
                      .mother("mother")
                      .build();

그냥 생성자로 만들지 왜 builder로 귀찮게 생성하는가?
이유는 가독성이다. 만약 new로 만든다고 한다면 아래와 같은 코드가 될 것이다.

//위 코드에서 @AllArgsConstructor로 전체 생성자를 만들어둠

Person person = new Person("John","father",,"mother");

위의 코드만 볼 때 1,2,3번째 파라미터가 어떤 값을 넣어야 하는지 알 수 있는가?
이것이 new의 단점으로 지금은 파라미터가 3개 밖에 없지만 만약 10개 이상으로 늘어나게 된다면 몇번째 파라미터에 무엇이 들어가야 하는지 계속 확인하고 집어 넣어야 한다. (4개 이상만 되도 가독성이 많이 안 좋아진다고 한다.)
그 와는 반대로 builder를 쓰게 되면 순서 상관없이 내가 원하는 파라미터에 어떤 값을 넣을지를 알 수 있기에 더욱 편리해지게 된다.


주의사항

다만 builderjpa와 사용시 생성자 문제가 생길 수 있는데 jpa의 경우는 기본 생성자를 필요로 함으로 builder를 쓰게 된다면 @NoArgsConstructor(access = AccessLevel.PROTECTED),
@AllArgsConstructor(access = AccessLevel.PROTECTED)
를 선언하여 사용하면 된다.

profile
greenTea입니다.

0개의 댓글