본문 바로가기

1.프로그래밍/Java

[Spring boot] Spring boot @Builder 에 대하여

728x90
반응형

Spring boot를 공부하면서 많은 구글 스승님들을 접하게 되면


모두 @Builder 라는 애노테이션을 이용한 주입방식을 사용하고있었다.


그렇기에 Builder이란 무엇일지에 대해서 찾아보고 정리하려고 해본다.



Builder Pattern은 객체 생성에서 주입하는 것에 대한 방식이다.

객체를 생성할때는 두가지 패턴이 존재하는데 생성자 패턴과 빌더 패턴이다.

생성자 패턴은 우리가 흔하게 사용했던 Constructor이다.

@Getter
@Setter
public class Car {

    private String id;
    private String name;

    public Car(String id, String name) {
        this.id = id;
        this.name = name;
    }
}

public class CarImpl {

    private String id = "1";
    private String name = "carTest";

    Car car1 = new Car(id, name);
    Car car2 = new Car(name, id);
}

위는 Car는 객체를 구현한건데 일반 생성자 패턴을 사용하면


코드에서 파라미터에 대한 정확성과 오류를 찾기 어려워지게 된다.


즉, 다른사람이 코드를 볼때 어떤 파라미터가 정확하게 전달 되었는지 확인하기 힘들다.


물론, 본인또한 확인하고 오류를 찾기 어려울꺼다.

그렇기에 Builder를 사용한다.


빌더를 사용하는 방식에는 Builder class를 스태틱으로 가져와 사용하는 방식과 Lombok으로 편하게 사용하는 두가지 방식이 존재하는 것 같다

필자의 정보가 정확한 정보는 아니고 필자는 Lombok을 통해 사용하는 방식을 공부해보려 한다.

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

@Getter
@Setter
public class Car {

    private String id;
    private String name;

    @Builder    // 생성자를 만든 후 그 위에 @Builder 애노테이션 적용
    public Car(String id, String name) {
        this.id = id;
        this.name = name;
    }
}

이렇게 해서 간단하게 Lombok을 통해 @Builder 애노테이션을 생성자를 만든 후 적용 해준다.

public class CarImpl {

    private String id = "1";
    private String name = "carTest";

    Car car3 = Car.builder()
            .id(id)
            .name(name)
            .build();
}

그 후 이런식으로 생성자 파라미터 주입을 해준다.


이렇게 하면 각 인자에 대한 파라미터 주입이 되게 명확해진다.


개발은 코드가 간결하고 명확해야 된다 배웠기 때문에 Builder을 통해 객체 생성 방식을 익히려고 해야겠다.

참고 블로그

위 블로그가 정말 설명이 잘 되어 있고 Builder Pattern에 대해 Lombok사용 방식도 아닌 이전 사용방식도 설명이 잘 되어 있다.


Lombok사용 방식을 이용하더라도 이전 사용방식은 알고 있을 필요가 있는거 같다.


사용 원리를 아는 것과 모른는 것은 차이가 있다고 생각한다.


더 깊고 자세한 내용은 저 블로그를 통해 공부하고 더 부족하면 더 찾아 나가시기 바란다.


이상으로 틀린점은 꼭 지적 부탁드립니다.

728x90
반응형