[Spring] interceptor, Filter 차이점

개요

jsp/servlet으로 프로젝트를 진행 할 당시 response시에 페이지 인코딩(UTF-8 처리)를 위해 Filter를 만들었던 경험이 있다.

 

그리고 이번 Spring프로젝트를 진행하면서 interceptor라는 것을 새로 만들어서 login 여부를 검사했다.

 

filter와 interceptor 모두 요청에 대한 전후처리를 담당하는 interface지만 분명 차이점이 있을 것 같아서 포스팅하여 남겨둔다.

왜 사용하는가?

일단 Filter와 Interceptor를 사용하는 이유 부터 알아봐야한다.

 

개요에서 말했듯 filter를 통해 한글처리를 해주었고 interceptor를 통해 로그인 유무 체크를 해주었다.

 

이름에서도 알수 있듯이 여러 요청에서 공통적인 특정한 조건을 걸러주거나(Filter) 잡아주는(Interceptor) 위해 사용하게 된다.

 

만약 이것들을 사용하지 않으면 각각의 Controller에서 직접 요청을 처리하는 귀찮은 경우가 발생하게 된다.

어느 시점에 작용하는가?

img

위 사진은 Spring MVC의 생명주기이다.

 

사진을 보면 Filter는 DispatcherServlet 전 단계, Web application에서 실행되고

interceptor의 경우 Servlet단위에서 실행되는 것을 확인할 수 있다.

 

DispatcherServlet이 기준이 된다는 것은 스프링 빈에 접근 할 수 있냐 없냐를 나타내기 때문에

filter에서는 주로 인코딩 변환이나 보안에 대한 처리가 이루어지고

interceptor에서는 권한 체크, 프로세스 실행 시간, 로그 등의 작업이 이루어진다.

+ Recent posts