[Spring] Lombok @Builder란?

giggle·2023년 7월 6일
0

Spring을 가지고 프로젝트를 진행하는 과정에서 객체를 생성할 때 간편하게 Lombok을 활용해 @Builder를 사용했습니다. 하지만 @Builder가 어떻게 구성되어있는지 궁금했기에 학습을 통해 해당 어노테이션을 알아보았습니다.

빌더 패턴(Builder Pattern)이란?

빌더 패턴(Builder Pattern)은 객체의 생성 과정을 단순화하고, 가독성과 유연성을 향상시키는 디자인 패턴입니다. 복잡한 객체를 생성할 때 사용되며, 객체의 속성을 설정하는 빌더 클래스를 이용하여 객체를 생성합니다.

public class Person {
    private String name;
    private int age;
    private String address;

    private Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
    }

    public static class Builder {
        private String name;
        private int age;
        private String address;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public Builder address(String address) {
            this.address = address;
            return this;
        }

        public Person build() {
            return new Person(this);
        }
    }
}

// 사용 예시
Person person = new Person.Builder()
    .name("giggle")
    .age(25)
    .address("apartment")
    .build();

위와 같이 빌더 패턴을 사용하게 된다면 다음과 같은 이점을 가질 수 있습니다.

유연한 객체 생성: 빌더 패턴을 사용하면 객체 생성 과정을 단계별로 분리할 수 있습니다. 필요한 속성만 설정하고, 선택적으로 다른 속성을 설정할 수 있습니다.

가독성과 유지 보수성: 빌더 패턴을 사용하면 객체 생성 코드가 보다 가독성이 좋아집니다. 필요한 속성만 설정하는 구문으로 코드를 작성하고, 객체 생성과 관련된 코드가 한 곳에 집중되므로 유지 보수성이 향상됩니다.

불변 객체 생성: 빌더 패턴을 사용하면 불변(Immutable) 객체를 쉽게 생성할 수 있습니다. 불변 객체는 변경 불가능한 상태를 제공하여 안정성과 스레드 안전성을 보장합니다.

선택적 매개변수 처리: 빌더 패턴은 선택적인 매개변수를 가진 객체를 편리하게 생성할 수 있습니다. 필요한 속성만 설정하고, 나머지는 기본값을 사용하거나 생략할 수 있습니다.


Lombok의 @Builder란?

@Builder 어노테이션을 클래스에 적용하면 해당 클래스에 대한 빌더 클래스를 자동으로 생성합니다. 이 빌더 클래스는 객체의 생성과 속성 설정을 담당하며, 메서드 체인을 통해 속성 값을 설정할 수 있습니다.

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Builder
public class Person {
    private String name;
    private int age;
    private String address;
}

// 사용 예시
Person person = Person.builder()
    .name("giggle")
    .age(25)
    .address("apartment")
    .build();

@Builder 어노테이션을 사용하게 되면 자동으로 빌더 클래스를 생성해주기 때문에 편리하게 개발이 가능합니다. 하지만 위와 같은 어노테이션을 사용하는 것보다 먼저 어노테이션에 대한 내용을 온전하게 이해하는 것이 중요할 것 같습니다.


피드백 및 개선점은 댓글을 통해 알려주세요😊

profile
배움을 글로 기록하는 개발자가 되겠습니다.

0개의 댓글