컨트롤러 클래스에 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 메서드를 검색
'동방프로젝트' 카테고리의 다른 글
json to java object (2) | 2021.02.10 |
---|---|
JSON 예시 (0) | 2021.02.09 |
jdbcTemplate 중복코드 제거 (2) | 2021.02.08 |
Model을 통해 컨트롤러에서 뷰에 데이터 전달 (1) | 2021.01.31 |
스프링이 제공하는 폼 태그 사용이전 jsp (1) | 2021.01.31 |