스프링
[스프링] 빌더 패턴 @Builder
HHRR
2024. 1. 23. 18:21
1. 객체를 생성하는 방법
객체를 생성하는 방법에는 대표적으로 다음과 같은 3가지가 있다.
- 생성자 패턴
User user = new User("유저1", "1234"); userRepository.save(user);
- 자바빈즈 패턴
User user = new User(); user.setUserId("유저1"); user.setUserPassword("1234"); userRepository.save(user);
- 빌더 패턴
User user = User.builder() .userId("유저1") .userPassword("1234") .build(); userRepository.save(user);
2. 빌더 패턴(Builder Pattern)이란?
빌더패턴은 객체를 생성하는 방법 중 하나이다.
객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각하는데, 매개변수가 많아질수록 많은 조합과 생성자의 수가 많아진다는 등의 단점이 있다.
그래서 객체 생성할 수 있는 빌더를 builder() 함수를 통해 얻고, 거기에 세팅하고자하는 값을 세팅하여 .builder()를 작동시켜 객체를 생성한다.
장점
- 생성자 파라미터가 많을 경우에 가독성이 좋지 않은데, 빌더 패턴은 각 값들의 이름 함수로 셋팅되어 각각 무슨 값을 의미하는지 파악이 쉽다
- 순서가 상관없다
3. @Builder
따라서 이 어노테이션은 빌더패턴으로 객체를 생성할 수 있게 해주는 어노테이션이다.
setter가 없기 때문에 객체의 불변성을 보장하며 데이터의 일관성을 유지할 수 있다.
빌더패턴을 적용할 객체에 @Builder 어노테이션을 달면 객체를 생성할 수 있다.
@Builder
public class User{
private String userPassword;
private String userId;
}
User user = User.builder()
.userId("유저1")
.userPassword("1234")
.build();
userRepository.save(user);
출처