본문 바로가기

공부 자료/Spring

[Spring MVC] Spring MVC 예외 처리 (@ExceptionHandler, @RestControllerAdvice)

@ExceptionHandler

: Spring MVC 예외 처리

: ErrorResponse 클래스를 이용해 Reqeust Body에 대한 유효성 검증 실패시 필요한 에러 정보만 담아 클라이언트에게 응답으로 전송

(기존의 에러 메시지보다 자세한 내용의 에러 메시지)

 

[단점]

1) 각각의 Controller 클래스에서 ExceptionHandler 애너테이션을 사용하여 Request Body에 대한 유효성 검증 실패에 대한 에러 처리를 해야하기 때문에 각 Controller 클래스마다 코드 중복이 발생함

 

2) Controller에서 처리해야 되는 예외가 유효성 검증 실패에 대한 예외만 있는 것이 아니기 때문에 하나의 Controller 클래스 내에서 @ExceptionHandler를 추가한 에러 처리 핸들러 메서드가 늘어남

>> 다양한 유형의 예외가 발생할 경우 부적절함

 

 

@RestControllerAdvice

: 특정 클래스에 애너테이션 추가시 여러개의 Controller 클래스에서 @ExceptionHandler, @InitBinder 또는 @ModelAtrribut가 추가된 메서드를 공유해서 사용이 가능

>> 즉, 예외 처리를 공통화 할 수 있음

: @RestControllerAdvice 를 사용할 경우 JSon 형식의 데이터를 Response Body로 전송하기 위해 ResponseEntiry로 매핑할 필요가 없음

: @ResponseStatus 애너테이션으로 HTTP Status를 대신 표현할 수 있음