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
반응형
'SPRINGBOOT > 소스코드' 카테고리의 다른 글
Spring Boot, REST API 예외 응답 로직 작성하기 (0) | 2017.12.06 |
---|---|
Spring Boot, ExceptionHandler, 전역 예외 처리 로직 작성하기 (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 4 (@ControllerAdvice와 404에러 핸들링) (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 2 (CustomException과 @ResponseStatus) (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 1 (@ExceptionHandler, @ResponseStatus) (0) | 2017.12.06 |
Spring Boot, Jackson, @JsonView로 멀티 뷰 구성하기 (0) | 2017.10.26 |
Spring Boot, REST API 예외 응답 로직 작성하기 (0) | 2017.10.26 |
Spring Boot, ExceptionHandler, 전역 예외 처리 로직 작성하기 (0) | 2017.10.26 |