Filter, Interceptor 시점, 그로 인한 예외 처리 차이

jaeyong Lee·2024년 8월 7일

filter 와 interceptor의 위치

filter : dispatcher servlet 외부에 존재

interceptor : dispatcher servlet 내부에 존재

예외처리 방식

filter에서 발생한 예외

서블릿 레벨에서 예외를 처리하기 위해 ErrorController를 사용
ErrorController -> 서블릿컨테이너에서 발생한 예외를 처리하고, 사용자 정의 페이지를 반환

※서블릿 컨테이너 : 톰캣 (요청을 처리하는 작업환경)
서블릿컨테이너 에서 발생한 예외처리 -> 404 not found, 500 internal server error
+) 404,500같은 에러가 떴다고 에러페이지가 뜨는데 이것도 톰캣에서 처리해준거다.

예시)
인증/인가 cors, api호출 전후 같이 url 요청받을때 톰캣의 서블릿으로 가는거니까 filter에서 예외처리

Interceptor에서 발생한 예외

Dispatcher내부에 있기 때문에 @ControllerAdvice를 통해 예외 처리 가능
@ControllerAdvice는 Spring MVC의 모든 예외를 전역적으로 처리 가능, Interceptor에서 발생한 예외도 이 방법을 통해 처리 가능하다.

예시) 비즈니스로직과 관련된 인증/인가 (로그인 처리), 로깅
쉽게 생각해서 비즈니스 로직에 대한 예외처리를 interceptor에서 하면된다. (전역으로 처리가능하고 컨트롤러 전 후 같이 개별적으로 처리도 가능)

0개의 댓글