Spring MVC/02.Spring @MVC

[spring]filter vs interceptor vs AOP

  • -

스프링을 사용하다 보면 자동으로 무언가를 해주는 3녀석 있다. filter, interceptor, AOP가 주인공인데 잘만 쓰면 우리의 코드를 확 줄여줘서 퇴근을 빠르게 해줄 수 있는 녀석들이다.

 

이번 포스트에서는 면접에서 이 녀석들의 차이점을 왕왕 물어보기도 하므로 정리해보자.

공통점

filter, interceptor, AOP의 사용 목적은 실제 호출하려는 대상 이전/이후에 호출되서 주요 목적 이외의 부가적인 동작을 처리해준다는 공통점이 있다. 

 

차이점

Spring @MVC를 이용해서 웹 애플리케이션을 작성한다고 할 때 filter, interceptor, AOP의 동작 위치를 살펴보자.

일단 filter는 spring과 무관한 J2EE의 스펙이다. 사용자의 모든 요청은 filter를 거쳐서 Servlet에 전달되므로 url mapping에 적합한 요청이라면 servlet 동작 보다 먼저 적용된다. ServletRequest/ServletResponse에 대한 사전/사후 처리가 가능하지만 spring 자원이 아니기 때문에 spring과의 협업이 어렵다.  (하지만 Spring에 DelegatingFilterProxy가 등장하면서 가능하게 되었다.) 

https://goodteacher.tistory.com/590

 

[Spring@MVC] 스프링과 Filter

처음 스프링을 공부하면서 Spring@MVC는 DispatcherServlet 부터 관여하고 Filter는 Servlet 이전에 동작하기 때문에 Filter는 Spring과는 무관한 기술이라고 배웠었는데.. 세월이 흘러 흘러 스프링에서는 Delegat

goodteacher.tistory.com

 

interceptor는 DispatcherServlet와 handler(controller)사이에서 역시 요청과 응답을 가로챌 수 있다. spring의 기술로 handler가 동작하기 이전에 동작한다. filter와 마찬가지로 url 기반으로 적용되는데 filter와의 차이점은 spring 기술이기 때문에 spring에서 관리하는 bean 들을 사용할 수 있게 된다.

AOP는 역시 spring의 기술이며 url 기반이 아닌 pointcut 기반으로 동작한다. filter나 interceptor는 HttpServletRequest, HttpServletResponse를 받아서 웹과 관련된 처리를 하는 반면 AOP는 주로 웹과 무관하게 business logic과 연결해서 사용된다.

 

좀 더 깊게

 

HandlerInterceptor

05. Handler Interceptor (tistory.com)

 

05. Handler Interceptor

Handler Interceptor Handler Interceptor는 말그대로 handler(Controller)로 가는 요청을 가로 채는 녀석으로 Servlet의 Filter와 유사한 녀석이다. 주요 역할은 여러 컨트롤러에서 공통적으로 사용되는 기능을..

goodteacher.tistory.com

 

AOP

01. AOP 기본 컨셉 (tistory.com)

 

01. AOP 기본 컨셉

AOP 스프링의 특징을 딱 두 가지만 들어보라면 앞서 배운 DI와 지금 소개할 AOP이다. 사실 AOP는 프로그래밍 과정에서 적극적으로 사용하지 않을 수도 있지만 스프링 내부적으로 어마어마하게 많이

goodteacher.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.