본문 바로가기

Java/Spring

[Spring] Controller의 Exception처리, @ControllerAdvice

- 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 내부에서 발생하는 에러를 처리하는 것이 좋다.

 

web.xml
CommonExceptionAdive 클래스
404page.jsp

 

'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