Filter, Interceptor, AOP 개념 및 순서

이번에 interceptor작업 할 일이 있어서 작업을 하다가 문득 이전에 학원에서 배우고 사용했던 AOP와의 차이가 뭔지 궁금해서 찾아보고 정리하게됨.

Filter, Interceptor, AOP

01. Filter, Interceptor, AOP의 개념

  • Filter : 요청과 응답을 거른 뒤 정제 하는 역할.
    • 서블릿 필터는 DispatcherSevelt이전에 실행이 되는데 필터가 동작하도록 지정된 자원의 앞단에서 요청 내용을 변경하거나 체크하는 동작을 수행.
    • ` Spring context외부`에 위치하여 스프링에 무관한 자원에 대하여 동작한다.
    • 자원 처리가 끝난 후 응답 내용에 대해서고 변경 가능하다.
  • Interceptor : 요청에 대한 작업 전/후로 가로챈다.
    • Filter와 다르게 DispatcherServelt이 컨트롤러를 호출하기 전, 후로 끼어들기 때문에 Spring context영역 내부에서 controller에 관한 요청과 응답에 대해 처리.
  • AOP(Aspect Oriented Programming-관점지향프로그래밍) : OOP를 보완하기 위해 나온 개념
    • 주로 로깅, 트랜잭션, 에러처리 등 비즈니스단의 메서드를 조금 더 세밀하게 조정하고 싶을 때 사용함.
    • 메소드의 전후 지점에 자유롭게 설정 가능
    • URL, Parameter, Annotation등 다양한 방법으로 대상을 지정 할 수 있음.

02. Filter, Interceptor, AOP의 차이

  • FilterWeb Application에 등록을 하고, InterceptorSpring의 Context에 등록을 한다.

  • Interface의 차이

    //filter
    public interface Filter {
      void doFilter(ServletRequest request, ServletResponse response, FilterChain chain);
    }
    
    // Interceptor
    public interface HandlerInterceptor {
      boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler);
      void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mav);
      void afterCompletion(HttpServletRequest request, HttpServeletResponse response, Object handler, Exception ex);
    }
    

03. Filter, Interceptor, AOP의 흐름

Filter,Interceptor,AOP_0001

  • Interceptor와 Filter는 Servlet 단위에서 실행된다. AOP는 메소드 앞에 Proxy패턴의 형태로 실행된다.

references

태그:

카테고리:

업데이트:

댓글남기기