상상 개발 4회) SpringMVC 예외와 사용자 정의 예외의 Response 형식 통일[완료]

hoyong.eom·2023년 11월 26일

상상개발

목록 보기
6/9

SpringMVC 예외와 사용자 정의 예외에서 발생한 Response를 통일

1) RestControllerAdvice에서 SpringMVC 예외를 간결하게 처리하기 위해서 ResponseEntityException을 상속받아 처리했다. 그런데, 사용자 정의 예외와 스프링 MVC예외의 Response 형식이 다르다. 이 형식을 포맷 시켜보자.


    @Override
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatusCode status, WebRequest request) {

        List<ValidationError> errors = ex.getBindingResult().getFieldErrors()
                .stream()
                .map(c -> ValidationError.of(messageSource, c)).filter(Objects::nonNull).collect(Collectors.toList());
        CommonErrorCode errorCode = CommonErrorCode.INVALID_PARAMETER;
        ErrorResponse errorResponse = new ErrorResponse(errorCode.getHttpStatus().value(), errorCode.getHttpStatus(), errorCode.getMessage(), errors);

        return handleExceptionInternal(ex, errorResponse, headers, status, request);
    }

위 처럼 재정의를 통해서 포맷을 일치시켰다. 단점은 모둔 SpringMVC 예외를 재정의해야한다는것.. 하지만 사용자 정의 포맷을 사용하려면 다른 방도가 없나보다..

0개의 댓글