콘텐츠로 이동

2022 02 21

2022-02-21

Lombok Builder

  • 참고: https://projectlombok.org/features/Builder
  • 참고: https://www.baeldung.com/lombok-builder
  • 참고: https://cheese10yun.github.io/lombok/
  • @Builder
    • 클래스 혹은 생성자에 붙일 수 있음
    • 다음 7가지를 내부적으로 생성한다고 보면 됨
      1. FooBuilder라는 inner static class "Builder"를 생성
      2. "Builder" 안에 non-static, non-final 필드를 만듦
      3. "Builder" 안에 no-args 생성자 만듦
      4. "Builder" 안에 setter와 비슷한 Builder 체인을 제공
      5. "Builder" 안의 build() 메서드는 객체 생성
      6. "Builder" 안에 toString() 구현 되어있음
      7. .builder() 를 호출하여 빌더 패턴 사용 시작
  • 클래스에 빌더 쓰기
    @Getter
    @Builder
    public class Widget {
        private final String name;
        private final int id;
    }
    
  • 롬복 팁
    1. @Data 쓰지 않기
      • @ToString, @EqualsAndHashCode, @Getter, @Setter, @RequiredArgsConstructor를 한번에 사용하는 어노테이션
    2. @Setter는 객체 안정성을 해침
    3. @ToString은 양방향 연관관계시 순환참조 발생
    4. @NoArgsConstructor의 접근 권한을 최소화 할 것 @NoArgsConstructor(access = AccessLevel.PROTECTED)
    5. @Builder 사용시 매개변수

Entity 부모가 둘인 경우