본문 바로가기

동방프로젝트

ControllerAdvice

컨트롤러 클래스에 ControllerAdvice를 이용해, 다수의 컨트롤러에서 동일 타입의 익셉션이 발생할 경우, 중복을 제거할 수있다.

 

@ControllerAdvice("spring")
public class CommonExceptionHandler{
	
	@ExceptionHanlder(RuntimeException.class)
    public String handleRuntimeException() {
    	return "error/commonException";
    }
}

ControllerAdvice가 적용된 클래스는 지정한 범위의 컨트롤러에 공통으로 사용될 설정을 지정할 수 있다.

위에선, spring과 그 하위패키지에 속한 컨트롤러를 위한 공통기능을 정의한 것으로,

spring패키지와 그 하위패키지에 속한 컨트롤러에서 RuntimeException이 발생하면 handleRuntimeException()을 통해 익셉션을 처리한다.

 

ControllerAdvice가 적용되는 클래스는 bean에 등록되어야 한다.

--

@ControllerAdvice클래스 내의 @ExceptionalHandler 메서드와 컨트롤러 클래스 내의 @ExceptionalHandler 중엔, 컨트롤러 내 메서드가 우선함.

컨트롤러 메서드 실행 과정에서 익셉션이 발생시,

1)같은 컨트롤러 내에 위치한 ExceptinalHandler 중 해당 익셉션을 처리할 수 있는 메서드 검색

2)같은 클래스 내의 위치한 메서드가 익셉션 처리를 못할경우, @ContorllerAdvice클래스에 위치한 ExceptionalHandler 메서드를 검색