Lang/Java

lombok @builder 패턴 사용

hamaganatanadda 2021. 12. 11. 17:23

@Data는 지양

 

@NoArgsConstructor 파라미터가 없는 기본 생성자를 생성
@RequiredArgsConstructor final이나 @NonNull인 필드 값만 파라미터로 받는 생성자
 - 생성자 의존성 주입 시 사용
@AllArgsConstructor 모든 필드 값을 파라미터로 받는 생성자 생성
 - 매개변수 순서, 개수 변경 시 문제

기본 사용
@ToString
양방향 연산관계에 있는 경우는 exclude로 제외 처리
@Getter

builder 패턴
매개변수 순서, 개수 변경 시 용이

클래스 상단 @builder 사용
- 생성자가 없을 경우 모든 멤버변수를 받는 생성자 생성(@AllArgsConstructor(access = AccessLevel.PACKAGE))
 -> 동일 패키지에서 생성자로 접근 가능
 -> 생성자로 접근 시 id, date 항목과 같이 생성되지 않아도 되는 항목도 매개변수로 넣어야함
 -> @AllArgsConstructor(access = AccessLevel.PROTECTED)로 생성자를 넣어줘도 가능
- 필드 변수 final 선언 가능

생성자 메소드 상단 @builder 사용
- 필요한 매개변수만 받을 수 있음
- 필드 변수 final 불가
  (Setter로도 접근불가하여 불변)
- 변경이 필요한 필드변수에 대해서는 개별 @setter 지정
- Mybatis 사용하려면 @NoArgsConstructor(access=AccessLevel.PROTECTED)를 사용
  (기본 생성자가 없기에 에러 발생, 프로젝트에서 직접 호출 불가하게 protected)
- 필드 변수 추가 시 생성자 메소드 변경 필요(매개변수 받을 경우)

자바 디컴파일러를 사용하여 확인 가능

가급적 후자 방법 사용