Back-End/Java

[Java] lombok의 @Builder 사용시 필수 필드를 입력하게 하는 방법

유자맛바나나 2023. 3. 14. 03:26

 

Lombok의 @Builder를 사용해 빌더 패턴을 구현할 때, 특정 필드를 반드시 입력하도록 하는 필수 필드로 만들 수 있다.

 

방법1. @NonNull 애너테이션 사용하기

import lombok.Builder;
import lombok.NonNull;

@Builder
public class Person {
    @NonNull private String name;
    @NonNull private Integer age;
    private String address;
}
  • 위의 코드에서 name과 age 필드는 @NonNull 애너테이션이 붙어 있기 때문에 필수 필드가 된다
  • 따라서 Person.builder()를 호출할 때 이러한 필드를 지정하지 않으면 컴파일 오류가 발생함

 

Person.builder()
        .address("123 Main St")
        .build();
  • 위의 코드에서 name과 age 필드를 지정하지 않았기 때문에 컴파일 오류가 발생한다

 

방법2. builderMethodName 옵션 사용하기

@Builder(builderMethodName = "myBuilder") // 기존에 정의된 builder를 myBuilder로 변경
public class Person {

    private String name;
    private Integer age;
    private String address;

    public static PersonBuilder builder(String name, Integer age) {
        return myBuilder().name(name).age(age);
    }
}
  • 두 번재 방법으로는 builder() 메서드를 Override하는 방법이 있다.
  • @Builder(builderMethodName = "myBuilder")와 같이 builderMethodName 옵션을 사용하여 기존에 정의된 빌더 메서드의 이름을 변경하고(기존의 builder()를 myBuilder()로 변경), builder() 메서드를 직접 재정의한다

 

Person.builder("test_name", 99) // builder의 파라미터로 반드시 전달해야 컴파일 에러가 안생김
        .address(55)
        .build();
  • 위의 코드에서 builder()에 name과 age를 전달하지 않으면 컴파일 오류가 발생한다