@Builder
정의
- 빌더 패턴을 사용하여 객체를 생성할 수 있는 빌더 클래스 생성
빌더패턴
정의
- 객체의 생성과 초기화를 더 쉽게 만들기 위한 디자인 패턴
- 객체를 생성할 때 여러 개의 매개변수를 가진 생성자를 사용하는 대신, 각각의 매개변수를 명시적으로 설정 가능
- 객체의 생성과정이 더 명확해지고 가독성이 높아짐
예시 코드
@Builder
public class Member {
private Long id;
private String username;
private String password;
private String nickname;
} code 생성
Member member = Member.builder()
.id(1L)
.username("example")
.password("password123")
.nickname("John Doe")
.build();
빌더패턴을 자동으로 생성
장점
- 많은 수의 매개변수를 갖는 생성자를 사용하지 않아도 객체 생성 가능
- 가독성이 향상되며 코드 간결화
- 필요한 필드에 대해서만 메서드 체이닝 방식으로 값 설정 가능
- 불변성 유지
주의할 점
- 빌더 클래스를 별도로 작성하지 않아도 되지만, 복잡한 초기화 로직이 있는 경우에는 제대로 처리 x
- 불변성을 유지할 수 있지만, 객체의 상태에 런타임에 변경 x
- 해당 어노테이션의 동작 방식을 명확이 이해 필요
안되는 상황
- 복잡한 초기화 로직 : 일반적으로 간단한 객체 초기화에 유용하지만, 복잡한 초기화 로직이 있는 경우에는 적합하지 않음
- 불변성이 중요한 경우 : 런타임에 상태가 변경될 수 있기 때문에 불변성을 보장하려면 추가 조치 필요
- 성능에 민감한 상황 : 추가적인 오버헤드 발생 가능
- 특정 라이브러리 호환성 : 일부 라이브러리 프레임워크는 작동 안되는 경우 있음