[개발] Spring boot

[Spring Boot] Lombok Builder 사용 이유

  • -
반응형

 

Lombok @Builder 사용 이유 🚀

Java에서 객체 생성 시 필드를 하나씩 설정하는 **Setter 방식**이나 생성자를 통해 값을 주입하는 방식은 가독성과 유지보수 측면에서 불편할 수 있습니다. Lombok의 @Builder는 이런 문제를 해결하기 위해 **빌더 패턴**을 쉽게 사용할 수 있도록 도와줍니다.


 

 

 

 

 

 

 

📌 빌더 패턴이란?

빌더 패턴은 객체 생성 시 **복잡한 생성자 호출을 대체**하고 필드 값을 직관적으로 설정할 수 있도록 도와주는 디자인 패턴입니다. 가독성이 좋고, 필요한 필드만 선택적으로 초기화할 수 있다는 장점이 있습니다.


 

 

 

 

 

 

 

 

 

✅ Lombok @Builder 사용 이유

  • **가독성 향상**: 필드의 이름을 명시적으로 설정하므로 코드의 가독성이 높아집니다.
  • **유연한 객체 생성**: 불필요한 필드를 초기화하지 않고 선택적으로 설정할 수 있습니다.
  • **불변 객체 생성**: 빌더 패턴을 통해 불변 객체를 쉽게 만들 수 있습니다.
  • **코드 간결화**: Lombok의 @Builder를 사용하면 직접 빌더 클래스를 작성할 필요가 없습니다.

 

 

 

 

 

 

 

 

🛠️ @Builder 사용 예제

아래는 Lombok의 @Builder를 사용해 객체를 생성하는 예제입니다.

1️⃣ Lombok @Builder 적용


import lombok.Builder;
import lombok.ToString;

@Builder
@ToString
public class User {
    private String name;
    private int age;
    private String email;
    
    public static void main(String[] args) {
        // User 객체 생성
        User user = User.builder()
                        .name("홍길동")
                        .age(30)
                        .email("hong@example.com")
                        .build();
        
        System.out.println(user);
    }
}
    

출력 결과:


User(name=홍길동, age=30, email=hong@example.com)
    

 

 

 

 

 

 

 

 

 

 

2️⃣ 필드 선택적 설정

@Builder를 사용하면 필요한 필드만 설정하고 나머지는 **기본값**으로 유지할 수 있습니다.


User user = User.builder()
                .name("이순신")
                .build();

System.out.println(user);
    

출력 결과:


User(name=이순신, age=0, email=null)
    

 

 

 

 

 

 

 

 

💡 @Builder의 장점

  • **복잡한 생성자**를 대신해 가독성이 높은 객체 생성
  • 필요한 필드만 선택적으로 설정 가능
  • 불변 객체 생성에 용이
  • 코드 작성량을 줄여 개발 생산성 향상

 

 

 

 

 

 

 

 

 

 

 

⚠️ 주의사항

  • @Builder는 클래스 레벨과 생성자 레벨에 적용할 수 있습니다.
  • 객체 생성 시 필드 값의 순서를 실수할 가능성이 없지만, 필드 이름이 바뀌면 컴파일 에러가 발생할 수 있습니다.
  • **불변 객체**를 생성하려면 필드를 final로 선언하세요.

 

 

 

 

 

 

 

 

 

 

 

🚀 결론

Lombok의 **@Builder**는 빌더 패턴을 간편하게 사용할 수 있게 도와주는 강력한 도구입니다. 객체 생성의 가독성을 높이고 코드 작성량을 줄이는 효과를 기대할 수 있습니다.

**유연하고 깔끔한 객체 생성**을 위해 Lombok의 @Builder를 프로젝트에 활용해 보세요! 😊

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.