개발 할 때 try-catch{ } 문으로 예외 처리를 하다보면 공통적으로 잡는 Exception 이 보인다.
난 중복된 코드를 싫어하기에 매번 Method 작성할 때마다 같은류의 try catch 가 보이는게 보기 싫었다.
그래서 찾은게 @ControllerAdvice
@ControllerAdvice
➔ @ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들에 AOP를 적용해 Controller 단에 적용하기 위해 고안된 어노테이션.
클래스에 선언하면 되며, 모든 @Controller에 대한, 전역적으로 발생할 수 있는 예외를 잡아서 처리할 수 있다.
@RestControllerAdvice (@ControllerAdvice + @ResponseBody)
➔ @ControllerAdvice와 동일한 역할을 수행하고, 추가적으로 @ResponseBody를 통해 객체를 리턴.
따라서 단순히 예외만 처리하고 싶다면 @ControllerAdvice를 적용하면 되고, 응답으로 객체를 리턴해야 한다면 @RestControllerAdvice를 적용하면 된다.
@ExceptionHandler
➔ 이 어노테이션을 메서드에 선언하고 특정 예외 클래스를 지정해주면 해당 예외가 발생했을 때 메서드에 정의한 로직으로 처리할 수 있다.
@ControllerAdvice 또는 @RestControllerAdvice에 정의된 메서드가 아닌 일반 컨트롤러 단에 존재하는 메서드에 선언할 경우, 해당 Controller에만 적용된다.
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity systemException(Exception ex){
// ...
}
Exception 이 발생할 경우 해당 @ExceptionHandler 호출
또한, ControllerAdvice를 사용하여 Exception 처리를 한 곳으로 모으는 경우, ResponseEntityExceptionHandler 를 상속받도록 하여 Spring MVC에서 기본으로 제공되는 Exception들의 처리를 간단하게 등록할 수도 있다.
아래 공식홈 참조
참조 :
https://velog.io/@banjjoknim/RestControllerAdvice
https://supawer0728.github.io/2019/04/04/spring-error-handling/
'web > SpringBoot' 카테고리의 다른 글
Maven VS Gradle (0) | 2023.09.07 |
---|---|
ErrorContoller 오류처리 (0) | 2023.09.06 |
DataJpaTest 중 삽질해결 기록.... (0) | 2023.08.31 |
Spring Boot 3.1.x 으로 RestFul API 서버 만들기(3) (0) | 2023.08.31 |
Spring Boot 3.1.x 으로 RestFul API 서버 만들기(2) (2) | 2023.08.28 |