반응형
SupperBuilder 란?
@SuperBuilder는 Lombok 라이브러리에서 제공하는 어노테이션 중 하나입니다. 이 어노테이션을 사용하면 자바 빈(Java Bean) 클래스를 빌더 패턴(Builder Pattern)으로 간편하게 구현할 수 있습니다.
빌더 패턴은 객체를 생성하기 위한 여러 속성을 가진 클래스를 생성하고, 이를 이용하여 객체를 생성하는 방식입니다. 빌더 패턴은 객체 생성을 보다 유연하고 가독성 높은 방식으로 구현할 수 있어, 객체 생성 로직이 복잡한 경우 유용합니다.
@SuperBuilder 어노테이션은 @Builder 어노테이션의 기능을 보완하기 위해 도입되었습니다. @Builder 어노테이션으로는 상속받은 필드를 빌더에서 사용하지 못하는 등의 제한이 있었습니다. @SuperBuilder 어노테이션은 이러한 제한을 해결하고, 상속받은 필드도 빌더에서 사용할 수 있습니다.
@SuperBuilder 어노테이션은 다음과 같은 장점이 있습니다.
- 빌더 패턴을 구현하기 위한 코드를 간결하게 작성할 수 있습니다.
- 별도의 빌더 클래스를 작성하지 않아도 됩니다.
- 생성자에서 상속받은 필드도 빌더에서 사용할 수 있습니다.
SupperBuilder 사용 예시
SuperBuilder를 사용하기 위해서는 부모와 자식 클래스 양쪽에 @SuperBuilder 어노테이션을 추가해줘야 합니다. 자식 클래스를 생성하면서 빌더를 통해 부모와 자식 클래스의 필드 모두를 작성할 수 있습니다.
부모 클래스 Parent
import lombok.experimental.SuperBuilder;
@SuperBuilder
public class Parent {
private String parentField;
}
자식 클래스 Child
import lombok.experimental.SuperBuilder;
@SuperBuilder
public class Child extends Parent {
private String childField;
}
SuperBuilder 예제 코드
import org.junit.jupiter.api.Test;
class SupperBuilderTest {
@Test
void supperBuilderTest() {
Child child = Child.builder()
.parentField("parent")
.childField("child")
.build();
}
}
반응형
'웹, 앱 개발 > Spring' 카테고리의 다른 글
@SpringQueryMap란? & 사용 예시 (0) | 2023.03.30 |
---|---|
[SpringBoot] sourceCompatibility & targetCompatibility (0) | 2022.07.19 |
[SpringJPA] @Embeddable & @Embedded (Value Type) (0) | 2022.05.23 |
[SpringBoot] Query Parameter Log (쿼리 파라미터 로그) 남기기 (0) | 2022.05.19 |
[Spring Boot] Junit5 - @RunWith(SpringRunner.class) (0) | 2022.05.13 |