@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 어노테이션에 대해 알아보았다.
끝
'스프링' 카테고리의 다른 글
| [자바] Lombok - 부모클래스의 toString 호출하기 (0) | 2022.11.17 |
|---|---|
| [스프링] Querydsl - 동적쿼리 구현 방법 (0) | 2022.10.19 |
| [스프링] 톰캣(Tomcat) 서버 시작 속도 개선 (2) | 2022.10.06 |
| [스프링] 접속 IP 주소 IPv4 형태로 가져오기 (인텔리제이) (0) | 2022.10.06 |
| [스프링] Spring Boot Devtools 사용해서 서버 재시작 시간 아끼기 (0) | 2022.08.30 |