Filter와 Interceptor

parkrootseok·2025년 1월 31일

스프링

목록 보기
6/12
post-thumbnail

Filter란?

Filter란 DispatcherServlet 외부에서 동작하며 HTTP 요청 및 응답을 가로채 추가 작업을 수행할 수 있도록 지원하는 인터페이스입니다. 즉, Spring MVC 내부 로직에 들어가기 전 또는 응답이 클라이언트에게 반환되기 전 특정 작업을 수행할 수 있습니다.

구성 요소

Filter는 다음과 같이 init(), doFilter(), destory() 3개의 메서드로 구성되어 있으며, init()destory()Default 키워드가 선언되어 있어 구현에 대한 강제성은 없습니다.

사용 방법

Filter를 사용하는 방법은 다음과 같습니다.

Filter 인터페이스 구현

Filter 인터페이스를 직접 구현하는 방법으로, 다음 예시와 같이 사용할 수 있습니다.

@WebFilter

@WebFilter 어노테이션을 사용하는 방법으로, 다음 예시와 같이 사용할 수 있습니다.

Spring Security

Spring Security는 다양한 Filter를 제공하는데, 그중 하나인 OncePerRequestFilter를 사용하여 다음과 같이 구현할 수 있습니다.

Interceptor란?

Interceptor란 DispatcherServlet 내부에서 동작하며 HTTP 요청 및 응답을 가로채 추가 작업을 수행할 수 있도록 지원하는 인터페이스입니다. 즉, Controller 실행 전과 후에 특정 작업을 수행할 수 있습니다.

구성 요소

Interceptor는 다음과 같이 preHandle(), postHandle(), afterCompletion() 3개의 메서드로 구성되어 있습니다.

사용 방법

Interceptor를 사용하는 방법은 다음과 같습니다.

인터페이스 구현 후 등록

HandlerInterceptor 또는 WebRequestInterceptor 등을 구현하는 방식으로, 다음 예시와 같이 사용할 수 있습니다.

Interceptor 작동 순서

Filter와 달리 Interceptor는 여러개 사용할 경우 다음 예시와 같이 preHandle()은 정방향 순서로 작동합니다. 하지만, postHandle(), afterCompletion()의 경우 역방향 순서로 작동하게 됩니다.

Filter VS Interceptor

Filter와 Interceptor 둘 다 요청이나 응답을 가로채 사용자가 정의한 특정 작업을 수행하려는 목적은 동일하지만, 다음과 같은 차이를 가지고 있습니다.

특징FilterInterceptor
동작 위치DispatcherServlet 외부DispatcherServlet 내부
적용 범위모든 요청 처리 가능Spring MVC 요청만 처리
Spring 예외 처리불가능가능
Request/Response 객체 조작가능불가능
Spring Context 접근가능하지만 복잡함가능

추가 학습이 필요한 내용

아래는 위 개념을 공부하면서 추가 학습이 필요할 것 같은 내용들입니다. 이 내용들은 차차 정리하여 링크를 달도록 하겠습니다.

Spring Security

예상 질문

Filter와 Interceptor의 차이는 무엇인가요?

둘 다 HTTP 요청이나 응답을 가로채 특정 작업을 수행하기 위한 목적은 동일하지만, Filter는 DispatcherServlet 외부 영역에서 Interceptor는 DispatcherServlet 내부 영역에서 동작한다는 차이점이 있습니다.

다중 Interceptor를 사용할 경우 모든 메서드에 대한 동작 순서가 같나요?

아닙니다. preHandle()의 경우 Interceptor 등록 순서와 일치하지만, postHandle(), afterCompletion()의 경우 등록 순서와 반대로 동작합니다.

profile
동료들의 시간과 노력을 더욱 빛내줄 수 있는 개발자가 되고자 노력합니다.

0개의 댓글