진이의 Developer Story

@ControllerAdvice를 이용한 커스텀 에러 처리 본문

Java/Spring

@ControllerAdvice를 이용한 커스텀 에러 처리

JIN3260 2016. 12. 4. 05:57

@ControllerAdvice
public class HTTPErrorHandler {
    @ExceptionHandler(NoHandlerFoundException.class)
    public String httpError404() {
		return "/common/exception/pageNotFound";
	}
}

위와 같이 컨트롤러를 만들어준다.

@ControllerAdvice 어노테이션을 사용한다. (Spring 4.0 이상에서 사용가능)


만약에 4.0 이하라면 web.xml에서 error-list 를 이용하여 처리해야 한다.

해당 방법은 다음 포스팅때 적도록 하겠다.


아래는 web.xml 설정방법이다.



<servlet>
	<servlet-name>spring</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/servlet/context-servlet.xml</param-value>
	</init-param>
	// 아래와 같이 처리하고자 하는 익셉션을 명시해준다.
	<init-param>
		<param-name>throwExceptionIfNoHandlerFound</param-name>
		<param-value>true</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

위와 같이 익셉션을 명시해주지 않으면 기존과 같은 방법으로 매핑된 주소를 찾기 때문에, 반드시 명시해줘야 한다.


Comments