Open nhkiiim opened 1 year ago
필드 기반 생성자로 빌더 패턴 적용 후 부모 클래스 생성자 호출로 해결
https://www.baeldung.com/lombok-builder-inheritance
@Data @AllArgsConstructor public class BaseDto { private Long seq; private Long size; }
@Data public class Dto extends BaseDto {
private List<...> dtoList;
@Builder
public Dto(Long seq, Long size, List<...> dtoList) {
super(seq, size);
this.dtoList= dtoList;
}
}
@SuperBuilder
사용으로 간단하게 해결
https://projectlombok.org/features/experimental/SuperBuilder
@Builder
와 달리, @SuperBuilder
는 수퍼 클래스에서도 필드를 처리
수퍼 클래스에도 @SuperBuilder 어노테이션이을 사용해야 적용 가능
@SuperBuilder
는 빌더 인스턴스를 매개변수로 사용하는 protected 생성자를 클래스에 생성
@SuperBuilder
는 @Builder
와 호환되지 않음
@Data
@SuperBuilder
public class BaseDto {
private Long seq;
private Long size;
}
@Data
@Builder
@SuperBuilder
@EqualsAndHashCode(callSuper = true)
public class Dto extends BaseDto {
private List<...> dtoList;
...
}
}