티스토리 뷰

BackEnd/SpringBoot

[Spring] - Filter VS Interceptor

영지는 달리는중 2021. 2. 17. 14:18

둘의 공통점 

- 이 둘은 무슨 행동을 하기전에 먼저 실행하거나, 실행 후에 추가적인 행동을 할 때 사용된다. 

- 공통업무를 프로그램 흐름의 앞, 중간, 뒤에 추가하여 자동으로 처리할 수 있는 방법을 제시한다. 

- 서블릿 단위에서 실행된다

 

그렇다면 왜 이 두개가 따로 존재하는지에 대한 차이점과

언제의 상황에 사용되는지에 대해 알아보자

 

 

1. Filter (필터)

  • 위의 그림에서 알 수 있듯 Dispatcher Servlet 이전에 실행된다. 
  • 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 여러가지 체크를 수행할 수 있다
  • 자원의 처리가 끝난 후 응답내용에 대해서도 변경하는 처리를 할 수 있다. 

사용 예시 

  • 서블릿 필터의 경우 Web.xml에 등록하고 인코딩 변환처리, XSS방어 등의 요청에 대한 처리로 사용된다
  • 필터의 실행메소드로는 - init(), doFilter(), destroy() 등이 있다 

 

2. Interceptor(인터셉터)

  • 요청에 대한 작업 전/후로 실행된다
  • 필터는 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대하여 동작하지만 인터셉터는 스프링의 DispatcherServlet이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 스프링 컨텍스트 내부에서 Controller에 관한 요청과 응답에 대해 처리한다. 
  • 또한 스프링의 모든 빈 객체에 접근 할 수 있다

사용 예시

  • 보통 로그인 체크, 권한체크, 프로그램 실행간 계산작업 로그확인 등의 업무처리에 사용된다. 
  • 인터셉터의 실행메소드로는 PreHandler(), PostHandler(), afterCompletion() 등이 있다

 

마무리

즉 이 둘은 공통업무를 프로그램 흐름의 전후에 추가하여 자동으로 처리할 수 있는 방법을 제공한다는 면에서는 공통점을 가지고 있지만 필터는 스프링과 무관한 자원들에 대하여 동작하고 인터셉터는 스프링 빈들 즉 컨트롤러에 관한 요청에 대하여 동작한다는 차이점이 있다. 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함