Spring

[Spring] 어노테이션 기반의 예외처리 / @ControllerAdvice와 @ExceptionHandler 어노테이션을 이용한 예외처리

bkuk 2023. 4. 29. 16:04

스프링에서의 예외처리

스프링에서는 @ControllerAdvice와 @ExceptionHandler 어노테이션을 이용해서 컨트롤러의 메서드 수행 중 발생하는 예외를 일괄적으로 처리할 수 있다.

먼저, presentation-layer.xml 파일에 예외 처리 관련 어노테이션 사용을 위한 설정(Namespace)을 추가한다.

스프링 설정 파일에 mvc 네임스페이스를 추가하고, 아래와 같이 앨리먼트를 설정해야 한다.

<mvc:annotation-driven></mvc:annotation-driven>

이는 예외 처리 클래스에서 예외 처리 메서드 위에 @ExceptionHandler 어노테이션을 사용했을 때 인식시키기 위한 작업이다.

 

예외 처리 클래스 작성

예외의 종류에 따라서 적절한 예외 화면이 서비스되도록 예외 처리 클래스를 작성해보자.

먼저 클래스 위에 선언된 @ControllerAdvice({패키지 경로}) 어노테이션에 의해 CommonExceptionHandler 객체는 자동으로 생성된다. 패키지 경로에 있는 컨트롤러에서 예외가 발생하는 순간 @ExceptionHandler 어노테이션으로 지정한 메서드가 실행된다.

이때, 어떤 예외가 발생했느냐에 따라 다른 메서드가 수행된다.

setViewname() 메서드로 지정한 jsp 파일을 작성해주면 완료된다.

<!-- 생략.. -->
<table width="100%" border="1" cellpadding="0" cellspacing="0" align="center">
	<tr>
		<td align="center">
		<br><br><br><br><br><br>
		Message: ${exception.message}
		<br><br><br><br><br><br>
		</td>
	</tr>
</table>
<!-- 생략.. -->