[안전한 객체 생성법] Builder 패턴 + Assert

배고픈 징징이 ㅣ 2023. 1. 19. 14:57

0. 장단점

[장점]
1. 쉽고 안전하게 객체를 생성
2. 선언 순서에 상관없이 객체 생성이 가능
3. 필수 파라미터가 아니면 사용할때 skip 가능

[단점]
1. 필요한 파라미터값만 세팅이 가능하다보니 Null Exception에 취약 -> Assert로 보완

 

1. 사용법

1-1. @Builder 어노테이션 선언

@Getter
@ApiModel(description = "연관검색어")
public class RecomKeyword {
    @ApiModelProperty(value = "키워드")
    private String keyword;

    @Builder
    public RecomKeyword(String keyword) {
        this.keyword = keyword;
    }
}

NPE 발생의 우려로 Assert를 사용하여 좀더 안전하게 보완 + NotEmpty 어노테이션

@ApiModel(description = "연관검색어")
public class RecomKeyword {
    @ApiModelProperty(value = "키워드")
    @NotEmpty
    private String keyword;

    @Builder
    public RecomKeyword(String keyword) {
        Assert.hasText(keyword, "keyword is empty");
        this.keyword = keyword;
    }
}

파라미터의 값이 null이면 Assert IllegalArgumentException을 발생시키며 중단된다.

 

1-2. 사용

recommentKeywords.add(RecomKeyword.builder()
                                  .keyword(out_str)
                                  .build());
반응형

'Java' 카테고리의 다른 글

Reflection  (0) 2023.01.20
@Transactional  (0) 2023.01.19
@Valid - 객체 유효성체크  (0) 2023.01.19
API - MultipartFile 파일전송  (0) 2023.01.19
COLLECTION  (0) 2023.01.19