[Lombok] @Setter, @Builder 알아보기

Yujeong·2024년 3월 10일
post-thumbnail

스프링을 처음 배울 떄에는 롬복의 @Setter를 먼저 알게 되었다. 그런데, 실제로는 @Builder를 사용하고 있어서 차이에 대해 알아본다.

@Setter

@Setter는 클래스의 필드에 대해 자동으로 setter 메서드를 생성한다. 이를 통해 객체의 속성 값을 설정할 수 있으며, 별도로 setter 메서드를 작성할 필요가 없어진다.

import lombok.Setter;

@Setter
public class Car {

    private String make;
    private String model;
    private int year;
}
  • 별도의 setter 메서드
// 기본 생성자
public Car() {
}

// make 필드의 setter 메서드
public void setMake(String make) {
	this.make = make;
}

// model 필드의 setter 메서드
public void setModel(String model) {
	this.model = model;
}

// year 필드의 setter 메서드
public void setYear(String year) {
	this.year = year;
}
  • 객체 생성 예시
Car car = new Car();
car.setMake("Kia");
car.setModel("k8");
car.setYear(2024);

@Builder

@Builder는 빌더 패턴을 자동으로 생성하여 객체를 초기화하고 생성하는 데 사용된다. 이를 통해 복잡한 객체를 쉽게 생성할 수 있으며, 객체의 속성 값을 설정하는 메서드를 자동으로 생성한다.

import lombok.Builder;

@Builder
public class Car {

    private String make;
    private String model;
    private int year;
}
  • 객체 생성 예시
Car car = new Car.Builder()
        .make("Kia")
        .model("k8")
        .year(2024)
        .build();

정리

구분@Setter@Builder
패턴자바빈즈 패턴빌더 패턴
중점객체 생성속성 값 설정
객체 생성 방법기본 생성자로 객체를 만들고, 필요한 정보는 setter 메서드를 사용해서 넣어주는 방법객체를 만들 때 필요한 정보를 조합해서 간편하게 만들 수 있는 방법
장점- 구현이 간단함
- 필요한 속성만 setter로 설정 가능
- 복잡한 객체 생성 과정을 단순화 가능함
- 객체의 각 속성을 명시적으로 지정하여 가독성이 높음
단점- 객체의 불변성을 보장하기 어려움
- 객체의 일관성을 해칠 수 있음
- 코드의 길이가 늘어날 수 있음

객체의 일관성, 불변성과 코드의 가독성을 위해 Builder 패턴을 사용하는 게 좋겠다.


참고
@Getter and @Setter
@Builder

profile
공부 기록

0개의 댓글