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 ~~ 구문을 내가 적용할 컨트롤러에 별도로 삽입해주면 해당 컨트롤러 에서만 에러 핸들링이 적용된다.
'SPRING' 카테고리의 다른 글
Spring Rest Docs 사용법 (0) | 2021.05.02 |
---|---|
Spring Batch (0) | 2021.04.28 |
Spring RestTemplate (0) | 2021.04.20 |
스프링 비동기 타임아웃 설정 변경 (0) | 2020.11.23 |
SpringBoot 에서 mobile리졸버 추가하기 (0) | 2020.10.27 |