728x90
반응형

@ControllerAdvice를 사용하면 웹애플리케이션에 등록된 모든 컨트롤러에서 공통적으로 에러 핸들링을 할 수 있다.


첫번째로는 @ExceptionHandler를 각 컨트롤러에서 사용하는 방법.

두번째로는 @ResponseStatus와 커스텀Exception 클래스를 만들어서 상황에 따라 throw 하여 처리하는 방법이 있었다.


이번에는 @ControllerAdvice를 보자.


사용법은 @ExceptionHandler와 똑같다고 보면 된다.

@ExceptionHandler 어노테이션을 붙인 핸들러 메소드가 각 컨트롤러에 있다면, 이 메소드들을 한 클래스안에 넣어주고 해당 클래스에 @ControllerAdvice 어노테이션을 붙이면 된다.


@ControllerAdvice
 class GlobalDefaultExceptionHandler {
 
     @ExceptionHandler(CustomException1.class)
     @ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "NOT FOUND"// 404
     public void customException(CustomException ex,
         HttpServletResponse response) {
        // ...
     }
 
     @ExceptionHandler(DataFormatException.class)
     @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "BAD REQUEST"// 400
     public void handleDataFormatException(DataFormatException ex,
         HttpServletResponse response) {
        // ...
     }
 }


이렇게 하면 각 컨트롤러에서 해당하는 익셉션이 처리가 안될 경우,

이 핸들러에서 공통적으로 처리하게 된다.



참고 : 

https://blog.jayway.com/2013/02/03/improve-your-spring-rest-api-part-iii/


728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,