- Controller를 작성할 때 예외 상황을 고려하면 처리해야 하는 작업이 엄청나게 늘어날 수 밖에 없다.
- 스프링 MVC에서는 이러한 작업을 다음과 같은 방식으로 처리할 수 있다.
∙@ExceptionHandler와 @ControllerAdvice를 이용한 처리
∙@ResponseEntity를 이용하는 예외 메시지 구성
@ControllerAdvice
- AOP(Aspect-Oriented-Programming)를 이용하는 방식이다.
- Controller를 작성할 때는 메서드의 모든 예외사항을 전부 핸들링해야 한다면 중복적이고 많은 양의 코드를 작성해야 하지만, AOP방식을 이용하면 공통적인 예외사항에 대해서는 별도로 @ControolerAdvice 어노테이션을 이용해서 분리하는 방식이다.
[1] Class 설정
- CommonExceptionAdvice 클래스에는 @ControllerAdive라는 어노테이션과 @ExceptionHandler라는 어노테이션을 사용하고 있다.
- @ControllerAdvice는 해당 메서드가 () 들어가는 예외 타입을 처리한다는 것을 의미한다.
- @ExceptionHandler 어노테이션의 속성으로 Exception클래스 타입을 지정할 수 있다. (위와 같은 경우 Exception.class를 지정하였으므로 모든 예외에 대한 처리가 except()만을 이용해서 처리할 수 있다.)
- 만일 특정한 타입의 예외를 다루고 싶다면 Exception.class 대신에 구체적인 예외 클래스를 지정하면 된다.
[2] component-scan 설정
: 해당 클래스의 패키지는 <component-scan>을 이용해서 해당 패키지의 내용을 조사하도록 해야한다.
1) XML 설정을 이용하는 경우
2) Java 설정을 이용하는 경우
[3] VIEW 설정
-CommonExceptionAdvice 클래스의 except() 메서드의 리턴값은 String타입이므로 VIEW(JSP)파일의 경로가 된다.
JSP는 error_page.jsp이므로 /WEB-INF/views 폴더내에 작성해야 한다.
404 에러 페이지
- WAS 구동 중 가장 흔한 에러와 관련돈 HTTP 상태 코드는 404와 500 에러코드이다.
- 500 메시지는 Internal Server Error이므로 @ExceptionHandler를 이용해서 처리되지만, 잘못된 URL을 호출할 때 보이는 404 에러 메시지의 경우는 조금 다르게 처리하는 것이 좋다.
- 서블릿이나 JSP를 이용한 개발 시에는 web.xml을 이용해서 별도의 에러 페이지를 지정할 수 있다.
- 에러 발생 시 추가적인 작업을 하기는 어렵기 때문에 스프링을 이용해서 404와 같이 WAS 내부에서 발생하는 에러를 처리하는 것이 좋다.
'Java > Spring' 카테고리의 다른 글
[Spring] 페이징 처리(dto, mapper) (0) | 2020.02.18 |
---|---|
[Spring] @RestController의 반환 타입 (0) | 2020.02.14 |
[Spring] REST + @RestController 정리, 설정 (0) | 2020.02.13 |
[Spring] Transaction 정리, 설정 (0) | 2020.02.13 |
[Spring] AOP 정리 (0) | 2020.02.12 |