1. @ControllerAdvice, @RestControllerAdvice 를 적용한 전역 예외 핸들링 설정 클래스
@RestControllerAdvice
public class GlobalExceptionHandler {
//@ResponseStatus(HttpStatus.UNAUTHORIZED)
@ExceptionHandler(value = ExpiredJwtException.class)
public ResponseEntity handleBaseException(HttpServletRequest request, ExpiredJwtException e) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("token expired!");
}
}
- @RestControllerAdvice 어노테이션을 적용한 설정파일으로 GlobalExceptionHandler클래스를 사용 하였다.
- @ExceptionHandler의 파라미터로 정의된 exception 클래스가 발생했을시 해당 에러 핸들링이 수행된다.
- @ResponseStatus 는 에러핸들링 메소드가 return 값을 별도로 갖지 않아도 클라이언트 단으로 정의한 HTTP에러코드를 보내준다. 현재는 별도로 RESPONSE에 BODY를 담아 보내며 STATUS 값도 정의해 리턴해 주었기 때문에 주석
- @ControllerAdvice와 @RestControllerAdvice의 차이점은 RestControllerAdvice는 에러와 관련된 내용을 자동으로 json형태로 클라이언트로 내려준다. (@ResponseBody 가 디폴트로 추가된 형태)
2. @ExceptionHandler 를 이용한 Controller단의 예외 핸들링
- 1번사항에서 적용한 @ExceptionHandler ~~ 구문을 내가 적용할 컨트롤러에 별도로 삽입해주면 해당 컨트롤러 에서만 에러 핸들링이 적용된다.