Spring
[Spring] @ControllerAdvice / @RestControllerAdvice 란?
kyunge_ev
2023. 1. 1. 22:15
- 전역적으로 예외를 핸들링할 수 있는 어노테이션
- 전 계층에서 발생한 예외를 한 곳에서 관리하고 처리할 수 있게 도와주는 어노테이션
- Custom Exception을 정의하여 사용 할 수 있음
@ControllerAdvice , @RestControllerAdvice 의 차이점
- 두 어노테이션의 차이는 @Controller 와 @RestController의 차이점과 동일
- @RestController 는 @ResponseBody가 포함되어 있어 응답을 JSON 형식으로 내려줌
@ExceptionHandler 란?
- @ControllerAdvice, @RestControllerAdvice와 함께 사용되어지는 어노테이션
- 위 어노테이션이 적용된 Bean 내에서 발생한 예외를 받아 처리할 수 있는 기능
- value 값을 가지고 있음 👉 value에 선언한 class의 예외만 처리함(value = 는 생략가능)
@RestControllerAdvice
public class ExceptionManager {
@ExceptionHandler(value = RuntimeException.class)
public ResponseEntity<?> runtimeExceptionHandler(RuntimeException e) {
//...
}
사용방법
exception 패키지를 생성하여 ExceptionManger 클래스로 @RestControllerAdvice를 사용하였음
클래스명은 원하는 걸로 지정해주어도 됨
@RestControllerAdvice
public class ExceptionManager {
@ExceptionHandler(RuntimeException.class)
public ResponseEntity<?> runtimeExceptionHandler(RuntimeException e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body(e.getMessage());
}
}