작성된 코드를 해석하다가 Builder에서 막혀버렸다... 빌더패턴이라고 하는데 잘모르겠어서 구글링하면서 다시 열심히 공부...ㅎ
@Builder
- Lombok 라이브러리에서 제공하는 어노테이션
- 자바클래스의 빌더 패턴을 자동으로 생성해주는 기능을 제공
- 빌더패턴은 객체의 생성과 초기화를 유연하게 처리하기 위한 디자인 패턴, 복잡한 생성자를 대신하여 객체를 생성하는 방식
여기서 핵심은
객체를 생성하는 방법이 생성자말고 빌더를 통해서 할 수 있다는 것이다.
빌더를 사용하는 이유?
생성자는 파라미터가 많을 경우 가독성이 안좋아져서 생성자 대신 빌더를 사용하곤 한다.
빌더의 특징
- @Builder를 적용한 클래스는 불변객체로 만들 수 있다. 생성자 대신 빌더를 통해 객체를 생성하므로 생성된 객체의 상태를 변결할 수 없게 된다.
- 복잡한 객체 생성과정을 명확하게 표현할 수 있으며 빌더 매서드 체인 형태로 필드 값을 설정하므로, 가독성이 높아짐.
- 필드 값을 선택적으로 설정할 수 있다. 필수적인 필드와 선택적인 필드를 구분하여 사용할 수 있으며, 사용하지 않는 필드는 자동으로 기본값으로 초기화한다.
- 필드의 순서에 관계없이 빌더 메서드 체인을 통해 값을 설정하므로, 일관성 있는 객체 생성 코드를 작성할 수 있음
빌더 사용해보기
[ 빌더 패턴을 적용할 객체에 @Builder 어노테이션 달기]
@Builder //빌더패턴으로 객체 생성
public Article(String title, String content) {
this.title = title;
this.content = content;
}
// entity > Article.java
[ Article을 참조하여 빌더 사용]
public Article toEntity() {
return Article.builder()
.title(title)
.content(content)
.build();
}
// DTO > AddArticleRequest.java
- toEntity() : 빌더패턴을 사용해 DTO를 엔티티로 만들어주는 메서드를 작성 -> 글을 추가할 때 저장할 엔티티로 변환하는 용도로 사용될 예정
- .title(title) 과 .content(content)를 통해 빌더 메서드 체인을 사용하여 필드값 설정
- .build() 메서드 호출하여 최종적으로 Article 객체를 생성하고 반환. 이때, Aritcle 클래스에서는 빌더패턴을 사용하므로 기본생성자가 아니라 빌더 패턴에 의해 객체가 생성된다.
반응형
'study > study_spring' 카테고리의 다른 글
[TIL] 좋아요 기능 구현 (Java) (0) | 2023.07.12 |
---|---|
[TIL] 게시물 조회 메서드 (+댓글) (0) | 2023.07.11 |
[TIL] 회원가입 구현 (0) | 2023.06.26 |
[TIL] IntelliJ IDEA에서 Gradle을 인식 못했을 때 (0) | 2023.06.21 |
[TIL] Query Method 기능 사용하기 (0) | 2023.06.16 |