@Builder

leverest96·2023년 1월 9일
0

Spring / Java

목록 보기
9/20
post-thumbnail

프로젝트를 진행하며 builder annotation을 마구잡이로 사용했다.
근데 사용 중 @Builder.default에 대해 궁금해서 찾아보던 중 깨달았다...
나는 @Builder를 사용하고 있었으나 잘 알지 못했던 것 같다...

생성자

@Builder는 생성자, 메서드 또는 클래스 레벨에서 쓰일 수 있다.

  • 클래스 레벨에서 쓰일 경우 기본적으로 전체 멤버를 생성자의 매개값으로 갖는 private 생성자를 만들어 준다.
  • 따라서, 클래스 레벨에서 사용할 경우 @AllArgsConstructor가 없으면 컴파일 에러가 발생한다.
  • 결과적으로, @NoArgsConstructor, @RequiredArgsConstructor과 혼용해서 사용해도 상관없으나 @AllArgsConstructor은 필수이다.

@Builder.default

위를 활용해서 default 값을 지정할 수 있다.
기본적으로, 코드가 아래와 같다면

@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Pojo {
    private String name;
    
    private String nickname;
}

각 필드 위에 @Builder.default를 선언하여 builder 패턴에서 default 값을 지정해 줄 수 있다.

@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Pojo {
    @Builder.Default
    private String name = "이츠미";
    
    @Builder.Default
    private String nickname = "중꺾마";
}
profile
응애 난 애기 개발자

0개의 댓글