반응형
@SuperBuilder 의 특징과 간단한 예제
@SuperBuilder는 Project Lombok 라이브러리의 어노테이션 중 하나로, 상속 구조를 가진 클래스에서 빌더 패턴을 쉽게 사용할 수 있게 해줍니다. 일반적인 @Builder 어노테이션과 달리 @SuperBuilder는 부모 클래스와 자식 클래스 간의 상속 관계를 고려하여 빌더를 생성합니다. 이를 통해 각 클래스의 필드를 초기화하는 데 필요한 빌더 메소드를 자동으로 생성해줍니다.
1. @SuperBuilder의 장점
- 상속 구조 지원: 상속 구조에서도 빌더 패턴을 쉽게 구현할 수 있게 해줍니다. 부모 클래스의 필드와 자식 클래스의 필드를 모두 한 번에 설정할 수 있는 빌더 클래스를 생성합니다.
- 타입 안전성: 빌더 패턴을 사용함으로써 객체를 생성할 때 타입 안전성을 보장받을 수 있습니다. 필요한 필드에 대한 값을 메소드 체이닝 방식으로 설정하기 때문에, 컴파일 타임에 타입 체크가 가능합니다.
- 가독성 향상: 객체 생성 시 생성자에 여러 매개변수를 전달하는 대신, 메소드 체이닝을 통해 필요한 필드만을 명시적으로 설정할 수 있습니다. 이는 코드의 가독성을 크게 향상시킵니다.
- 불변 객체 생성 용이: 빌더 패턴은 불변 객체(Immutable Objects)를 생성하기에 적합한 패턴입니다. 객체 생성 후 상태를 변경할 필요가 없는 경우, 빌더를 통해 불변 객체를 손쉽게 생성할 수 있습니다.
2. @SuperBuilder 예제
부모 클래스 Vehicle과 이를 상속받는 자식 클래스 Car가 있다고 가정해보겠습니다. @SuperBuilder를 사용하여 빌더 패턴을 적용하는 예제 코드는 다음과 같습니다.
2-1. 부모 클래스 (Vehicle.java)
import lombok.experimental.SuperBuilder;
@SuperBuilder
public class Vehicle {
private String brand;
private String model;
}
2-2. 자식 클래스 (Car.java)
import lombok.experimental.SuperBuilder;
@SuperBuilder
public class Car extends Vehicle {
private int seats;
private boolean sportsCar;
}
2-3. 객체 생성 예제
public class Main {
public static void main(String[] args) {
Car car = Car.builder()
.brand("Toyota")
.model("Supra")
.seats(2)
.sportsCar(true)
.build();
System.out.println(car);
}
}
이 예제에서는 @SuperBuilder를 사용하여 Vehicle 클래스와 Car 클래스에 대한 빌더를 생성했습니다. Car 객체를 생성할 때 Car.builder() 메소드를 사용하여 부모 클래스인 Vehicle의 필드(brand, model)와 Car의 필드(seats, sportsCar)를 모두 설정할 수 있습니다. 이렇게 @SuperBuilder를 사용하면, 상속 구조에서도 각 클래스의 필드를 쉽게 설정하며 객체를 생성할 수 있습니다.
반응형
'Back-end > Spring' 카테고리의 다른 글
[Spring] Security CSRF 비활성화 (6.1 버전 이상) (0) | 2024.02.09 |
---|---|
[Spring] @RestControllerAdvice 사용해서 Controller 예외처리 (1) | 2024.02.09 |
[Spring] DTO 간 복사(BeanUtils, ModelMapper커스텀 하는방법 포함) (0) | 2024.02.09 |
[Spring] 시큐리티 예외 처리와 사용자 인증 (시큐리티6 이상) (1) | 2024.01.30 |
[Spring] Security 6 버전 인메모리 사용자 설정 간단한 예제 (0) | 2024.01.30 |