스프링
[스프링] @RestControllerAdvice 이용한 예외처리 방법
imcoding
2022. 10. 14. 14:37
@RestControllerAdvice
스프링에서 예외처리를 하는 대표적인 방법으로 @ExceptionHandler 어노테이션이 있다.
하지만 이 어노테이션은 각각의 메서드에 따로 적용되기 때문에, 필요한 메서드마다 일일이 달아줘야 하는 번거로움이 있다.
우리는 RestControllerAdvice 어노테이션을 이용해 그 불편함을 줄일 수 있다.
바로 코드로 설명하겠다.
@RestControllerAdvice
public class GlobalExceptionHandler {
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // 500 error
@ExceptionHandler(Exception.class) //
public Exception handlerAllException() {
System.out.println("error from GlobalExceptionHandler");
return new Exception();
}
예외처리를 담당할 클래스를 하나 만들어주고, RestControllerAdvice 어노테이션을 선언한다.
이 어노테이션은 프로젝트 내에 모든 클래스에서 발생하는 예외들을 모아주는 역할을 담당한다.
그리고 각 예외들마다 ExceptionHandler 어노테이션을 붙인 메서드가 처리하도록 하면 된다.
위 코드의 경우에는, 일단 예외가 발생하면 GlobalExceptionHandler 클래스로 보내지고 handlerAllException 메서드에 의해 처리될 것이다.
추가로, 이름에서 보듯이 Rest가 빠진 ControllerAdvice 어노테이션도 있다.
둘의 차이는 응답 형태가 Json이냐 아니냐로 구분되니 참고하자.
각 클래스의 메서드마다 예외처리를 개별적으로 지정해야 하는 번거로움을 줄여줄 수 있는 @RestControllerAdvice 어노테이션에 대해 알아보았다.
끝