동방프로젝트
ControllerAdvice
두원공대88학번뚜뚜
2021. 2. 8. 19:18
컨트롤러 클래스에 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 메서드를 검색