일단 크게 2가지가 있다.
1. @HandlerException, @ControllerAdvice를 이용하는 방안
2. BasicErrorController를 이용하는 방안
이 두 사용방안은 실행되는 위치가 다르다.
1은 Interceptor, 2는 Filter
그림으로 보면,

1 에서 처리된 exception은 2까지 전파되지 않는다. 그래서 중복설정하게되면 basicErrorController가 왜 먹히지?하는 상황이 올수있다. 1과 2의 공통기능은 결국 Exception을 핸들링해주는 것이기 때문에 각 특징을 알고 써먹으면 될거같다.
@HandlerException와 BasicErrorController의 각각의 특징을 정리해보면,,
- HandlerException
Exception을 미리 메소드별로 나눠서 처리가능하다. 반대로 말하면 BasicErrorController는 모든 exception을 메소드별로 나눠서 처리하는게 불가능(error(), errorHtml()이란 메소드로만 분리됨)
- BasicErrorController
Exception을 html로 주는 경우(errorHtml), 그 외의 경우로 나눌수(error) 있음
'개발 > Spring' 카테고리의 다른 글
| JPA Repository의 D.I 과정 (0) | 2020.06.25 |
|---|---|
| Transaction & 영속성 컨텍스트 이야기 (0) | 2020.06.23 |