WEB/Spring

스프링 전역 예외처리

대전집주인 2024. 3. 23. 17:10
728x90
SMALL

스프링에는 전역 예외처리를 해주는 방법으로 여러가지 방법을 제공한다. 그중 어노테이션으로 처리하는 방법을 알아보려고 한다. @RestControllerAdvice, @ControllerAdvice 이 두 개의 어노테이션은 같은 방식으로 에러를 처리하는 어노테이션이다 다만 두 개의 어노테이션 차이로는 @RestControllerAdvice = @ControllerAdvice + @ResponseBody 로 볼수가 있다.

 

@ControllerAdvice란?

@ExceptionHandler, @ModelAttribute, @InitBinder 가 적용된 메서드들을 AOP를 적용해 컨트롤러 단에 적용하기 위해 고안된 어노테이션이다.

 

@RestControllerAdvice란?

@RestControllerAdvice = @ControllerAdvice + @ResponseBody 로 예외처리후 조건에 맞는 응답을 json으로 사용자 화면에 출력해준다.

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

	// 컨트롤러 전역에서 발생하는 예외를 잡아 Throw 해준다.	
    @ExceptionHandler(RuntimeException.class)
    public String handleRuntimeException(final RuntimeException e) {
        log.error("handleRuntimeException : {}", e.getMessage());
        return e.getMessage();
    }
}

 

위와 같이 어노테이션을 사용함으로서 예외에 대한 조건이 발생하면 해당 메소드를 발생시켜 예외 처리를 할 수 있다. 상황에 따라 json으로 응답도 가능하며 @RestControllerAdvice(basePackages = EditController.class), @RestControllerAdvice(basePackages = "con.app.test.controller") 식으로 범위를 클래스나 패키지 단위로 제한할수도 있다.

 

참고

 

@RestControllerAdvice를 사용해보자

Controller에서 예외 처리를 깔끔하게 해보자.

velog.io

 

 

@RestControllerAdvice 관련 정리

@ControllerAdvice+@ResponseBody 를 한꺼번에 사용 할 수 있게 해주는 어노테이션 입니다. @ControllerAdvice은 @InitBinder, @ModelAttribute, @ExceptionHandler 관련 어노테이션을 여러 컨트롤러에 걸쳐 공통으로 설정 할

kooremo.tistory.com

 

728x90
LIST