코딩못하는사람

Filter와 Interceptor 본문

스프링(Spring)/개념

Filter와 Interceptor

공부절대안함 2021. 12. 30. 05:54

Filter란?

Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공해준다.말 그대로 client와 Dispatcher Servlet사이에 필요한 작업을 할 수 있도록 필터를 사용하는 것이다.

  - init() : 필터 초기화
  - doFilter() : 전, 후처리용 메소드, 내부에서 filterChain.doFilter를 호출하여 해당 비즈니스처리를 계속해서 수행한다.
  - destory() : 필터 종료이후 실행.

 

Intercepter란?

Spring이 제공하는 기술로,Dispatcher Servlet을 통과하고 handler mapping을 완료한 후 Controller에 들어가기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다.

메서드에 따라 다른 실행 시점을 가져간다.

- preHandle() (컨트롤러가 호출되기 전)
- postHandle() (컨트롤러를 호출된 후)
- afterCompletion()  (view를 렌더링한 후)

 



 

Filter와 Inteceptor의 공통점

요청에 대한 전후 처리 하는 역할을 수행한다. 또한 uri기반으로 언제 실행할 것인지를 조정 가능하며, 직접 request의 내용을 파악해서 원하는 조건에 부합할 때 로직을 수행할 수 있다

 

Filter와 Inteceptor의 차이점

https://mangkyu.tistory.com/173

Filter

필터에서는 웹 에플리케이션에서 전역적으로 처리해야 하는 작업에 사용 된다.

보안과 관련된 작업에 유용하게 사용된다. 인터셉터보다 앞단에서 작용되기 때문에 스프링 컨테이너까지 요청을 가지 않게 할 수 있다.

더 나아가 필터는 ServletRequest,ServletResponse를 교체할 수 있다는 점에서 강력하다

(이 기능의 필요성 및 예시는 여기에 있다)

 

 

interceptor

클라이언트의 요청과 관련하여 전역적으로 처리해야 하는 작업에 사용된다.

요청에 대한 인증 및 인가 작업에 주로 사용된다. 컨트롤러로 넘겨주기 위한 데이터를 가공하거나 추가적인 로직을 적용하기에 좋다(AOP와 비슷하다)

 

 

공부한 곳

https://supawer0728.github.io/2018/04/04/spring-filter-interceptor/

https://mangkyu.tistory.com/173

Comments