WebControllerAdvice 사용

한민기·2024년 11월 18일

Spring

목록 보기
8/8

WebControllerAdvice 란?

컨트롤러에서 예외가 발생하였을때 적절히 예외처리를 해주는 역할을 한다.
어노테이션 @RequestMapping이 달린 메서드 실행 중 발생한 예외를 가로채는 exceptions interceptor이다.

그럼 왜 사용하는가?

애플리케이션 내 모든 컨트롤러에서 발생하는 예외를 처리할 수 있다. WebControllerAdvice를 사용하면 컨트롤러는에서의 코드 중복을 피할 수 있다. 그래서 컨트롤러는 컨트롤러 역할만 집중하면 되고 예외 처리의 경우 다른 곳에서 처리하도록 분리할 수 있다.

나의 적용법

먼저 저는 RestController를 사용하여서 @RestControllerAdvice 를 사용하였습니다.

나의 코드

@RestControllerAdvice
public class WebControllerAdvice {
	/**
     * NOT_FOUND 처리 메소드
     * 
     * @return ApiResponse<ErrorResponseForm>
     *
     */
    @ExceptionHandler({
            FileNotFoundException.class
    })
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public ApiResponse<ErrorResponseForm> notFoundHandler(Exception ex, Model model) {
        return ApiResponse.notFoundFail(
                ErrorResponseForm.builder()
                        .title(ex.getMessage())
                        .status(HttpStatus.NOT_FOUND.value())
                        .timestamp(ZonedDateTime.now().toString())
                        .build()
        );
    }
}

코드 설명

제 코드에서 만약 FileNotFoundException예외가 발생했을 경우 RestController의 return 값이 기존의 값이 아닌 ApiResponse 값으로 return 하게 됩니다. 그래서 그거에 관련된 내용을 반환시키기 위해 코드를 작성하였습니다.

사용법

  • class에 @RestControllerAdvice를 추가
  • @ExceptionHandler안에 처리할 예외들을 작성
  • @ResponseStatus를 통해 반환할 HttpStatus를 설정합니다.
  • 그리고 반환할 값을 설정한 후 작성합니다.
profile
백엔드 개발자

0개의 댓글