아장아장 개발 일기

Lombok Builder로 초기값 세팅하기 본문

개발/Spring

Lombok Builder로 초기값 세팅하기

빨간머리 마녀 🍒 2022. 4. 1. 16:30

리서치 동기

엔티티를 Builder 어노테이션을 통해 생성하는데, 한 필드의 기본값을 false로 설정할 필요가 있어 리서치 후 소스에 적용했다.

기존 다른 객체를 저장할때는 build를 사용하지 않았고, build를 사용하지 않는 경우에는 ColumnDefault 어노테이션을 통해 디폴트 값을 설정 할 수 있었다.

리서치 내용

builder로 생성하는 객체의 초기값 설정에는 크게 세가지 방법이 있다. 세가지 모두 고유의 단점이 있으므로, 필요에 맞게 선택 사용 해야한다.

1. @Builder.Default 어노테이션 사용

public class Test {
    @Builder.Default
    private Boolean isAvailable = false;


// 단점 : new Test()를 생성하면 isAvailable 초기값 설정이 되어있지만, Test.build()로 생성된 객체는 isAvailable 초기값이 설정되지 않음.

2. Builder 초기화

@Builder(builderClassName = "TestBuilder")
public class Test {
    private Boolean isAvailable = false;

        public static class TestBuilder {
                private Boolean isAvailable = false;
        }


// 단점 : 이중 초기화 + 클래스명을 바꿀경우 내부 클래스의 이름이 함께 자동으로 바뀌지 않음. 이로 인해 생기는 오류를 방지하기 위해 builderClassName 속성을 추가해줌.

3. toBuilder 사용

@Builder(toBuilder = true)
public class Test {
    private Boolean isAvailable = false;

// 단점: 딱히 없는 것 같음. 참고한 Baeldung 웹페이지에는 Test 객체를 생성할때 Test test = new Test().toBuilder() 이런식으로 써줘야한다고 하는데, 직접 코드를 써보니 기존과 동일하게 Test test = Test.toBuilder()... 로 작성해도 문제없이 작동함.

참고자료
https://www.baeldung.com/lombok-builder-default-value

Comments