아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라

  • nullsafe 하지 않기 때문에 정적 팩토리 메서드와 함께 nullsafe 를 보완하거나 테스트 코드에서만 사용하곤 합니다.

@Getter
@Builder
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class ErrorResponse {

	private final String code;
	private final String codeName;
	private final String message;
	private final LocalDateTime time = LocalDateTime.now();
	private final String transactionId = MDC.get("transactionId");
	private final List<FieldError> errors;

	public static ErrorResponse of(final ErrorCode errorCode, final List<FieldError> errors) {
		return ErrorResponse.builder()
				.code(errorCode.getCode())
				.codeName(errorCode.name())
				.message(errorCode.getReason())
				.errors(errors)
				.build();
	}

	public static ErrorResponse of(final ErrorCode errorCode) {
		return ErrorResponse.builder()
				.code(errorCode.getCode())
				.codeName(errorCode.name())
				.message(errorCode.getReason())
				.errors(new ArrayList<>()) // errors 가 없다면 초기 값을 넣어줌.
				.build();
	}
}

Last updated