[Spring] Lombok 빌더 패턴 Builder Pattern

동민·2021년 6월 29일
0

빌더 패턴 Builder Pattern (Lombok)

Spring 개발 시, DTO 객체에 Lombok @Builder 어노테이션을 사용하면 아래와 같이 체인 구조로 작성할 수 있다.

// @Data -> Builder 패턴 사용 시 @Data (Setter/Getter 등) 을 사용하지 않는 것이 좋다.
@Builder
public class Item {
    private String itemName;
    private String price;
    private Integer venCd;
}
Item item = Item.builder()
    .itemName("나이키")
    .price("30000")
    .venCd(10)
    .build();

장점

  • immutable (불변)한 방식으로 객체를 생성할 수 있다.
    -> Setter 메소드를 이용한 JavaBeans 패턴은 객체생성 이후에 데이터를 Set 하는 방식으로 immutable (불변)하지 않은 일관성이 깨지는 단점이 있다. ( Setter 1회 호출로 생성이 끝나지 않음 )
    하지만, Builder 패턴은 객체를 생성할 때, 명시적으로 멤버변수의 데이터들을 대입할 수 있다. 즉, immutable한 방식으로 객체를 생성할 수 있음!

단점

  • 멤버변수의 수가 많을 경우 가독성이 떨어질 수 있다.

주의

Builder 패턴 사용 시 @Data (Setter/Getter 등) 어노테이션을 사용하지 않는 것이 좋다.
-> 빌더 패턴의 의미가 없어짐

자바 빈즈 패턴 Javabeans Pattern

@Data
public class Item {
    private String itemName;
    private String price;
    private Integer venCd;
}
    Item item = new Item();
    item.setItemName("나이키");    
    item.setPrice("30000");
    item.setVenCd(10);
    
    ...
    
    item.setItemName("아디다스"); // Setter 재호출 -> 일관성 X, immutable 불변하지 않음

참고

[Java] 객체 Object Type Setter, Primitive Type Setter :: Call by Reference, Call by Value

https://velog.io/@kmdngmn/Java-%EA%B0%9D%EC%B2%B4-Object-Setter-Primitive-Type-Setter-Call-by-Value-Call-by-Reference

profile
BE Developer

0개의 댓글