1편에서는 각 컨트롤러 내부에 @ExceptionHandler 어노테이션을 사용한 익셉션 처리를 봤다.
이 방법의 단점은 해당 컨트롤러에서만 사용할 수 있고, 각 컨트롤러마다 설정을 해줘야 한다는 것이다.
두번째 방법은 @ResponseStatus 어노테이션과 'CustomException' 클래스를 만들어 사용하는 방법이다. (ResponseStatusExceptionResolver)
HomeController.class
AnotherController.class
CustomStatusException.class
CustomStatusException은 RuntimeException을 상속한 커스텀 익셉션 클래스다.
@ResponseStatus 어노테이션을 사용하여 사용자에게 리턴해줄 response code와 error reason을 적어준다.
위처럼 컨트롤러 2개가 있다고 치자. 하나는 '/home', 다른 하나는 '/about' 으로 연결되는 RequestMapping이 되어 있다.
만약 두 메소드 모두 특정 상황에 404 페이지를 보여줘야 한다면 1편에서 설명한것처럼 @ExceptionHandler를 각 컨트롤러에 선언해주는 방법이 있고,
다른 한가지는 위에 선언한 CustomStatusException을 throw 해주는 방법이 있다.
throw CustomStatusException을 하게되면 CustomStatusException에 선언된 @ResponseStatus 어노테이션에 의해 공통적으로 404 페이지와 error reason을 설정할 수 있다.
단점이라면,
이렇게 할 경우 공통적으로 사용할 CustomException 클래스가 필요에 의해 지속적으로 늘어날 가능성이 있다.
* RuntimeException을 extends 받아야한다. 그냥 Exception으로 받으면 안됨.
'SPRINGBOOT > 소스코드' 카테고리의 다른 글
Spring Boot, REST API 예외 응답 로직 작성하기 (0) | 2017.12.06 |
---|---|
Spring Boot, ExceptionHandler, 전역 예외 처리 로직 작성하기 (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 4 (@ControllerAdvice와 404에러 핸들링) (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 3 (@ControllerAdvice를 사용한 전역 익셉션 처리) (0) | 2017.12.06 |
[spring] 서블릿 에러 핸들링 - 1 (@ExceptionHandler, @ResponseStatus) (0) | 2017.12.06 |
Spring Boot, Jackson, @JsonView로 멀티 뷰 구성하기 (0) | 2017.10.26 |
Spring Boot, REST API 예외 응답 로직 작성하기 (0) | 2017.10.26 |
Spring Boot, ExceptionHandler, 전역 예외 처리 로직 작성하기 (0) | 2017.10.26 |