ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring Interceptor, Filter, AOP 와 각 차이점
    Spring 2023. 3. 16. 01:02

    Interceptor

    Spring Interceptor는 스프링 프레임워크에서 제공하는 기능으로, 컨트롤러의 메서드 호출 전후에 원하는 처리를 수행할 수 있습니다. 일반적으로 로그인 여부 체크, 권한 체크, 인증 토큰 체크 등의 기능을 수행합니다. Interceptor는 HandlerInterceptor 인터페이스를 구현하고, WebMvcConfigurer 인터페이스를 구현하여 설정할 수 있습니다.

    Interceptor의 특징은 다음과 같습니다.

    • 컨트롤러의 메서드 호출 전후에 처리를 수행합니다.
    • 컨트롤러가 처리하는 요청만 가로챕니다.
    • HandlerInterceptor 인터페이스를 구현합니다.

    Filter

    Filter는 Servlet API에서 제공하는 기능으로, 요청과 응답을 가로채서 원하는 처리를 수행할 수 있습니다. 일반적으로 인코딩 처리, XSS 공격 방지, 인증 처리 등의 기능을 수행합니다. Filter는 javax.servlet.Filter 인터페이스를 구현하고, web.xml 파일에서 설정할 수 있습니다.

    Filter의 특징은 다음과 같습니다.

    • 요청과 응답을 가로챕니다.
    • 모든 요청에 대해 처리를 수행합니다.
    • javax.servlet.Filter 인터페이스를 구현합니다.

    AOP

    AOP(Aspect Oriented Programming)는 프로그래밍 패러다임 중 하나로, 관심사(Concern)를 분리하여 모듈화하는 방법입니다. AOP는 로깅, 트랜잭션 처리, 보안 등의 공통적인 기능을 모듈화하여 여러 모듈에서 공통으로 사용할 수 있도록 지원합니다.

    • Interceptor와 Filter는 공통적인 기능을 컨트롤러나 요청과 응답에 적용하는 방법으로 처리하는 반면, AOP는 프로그램의 여러 곳에서 공통적으로 수행되는 기능을 횡단 관심사(Cross-cutting Concerns)라는 추상화 단계로 분리하여 처리합니다.

    차이점

    • Spring Interceptor와 Filter의 가장 큰 차이점은 가로채는 범위입니다. Interceptor는 컨트롤러가 처리하는 요청만 가로채지만, Filter는 모든 요청에 대해 처리를 수행합니다.
    • Interceptor는 스프링 프레임워크에서 제공하는 기능으로, 스프링의 ApplicationContext에서 빈을 주입받을 수 있습니다. 반면, Filter는 Servlet API에서 제공하는 기능으로, 스프링의 ApplicationContext를 직접 참조할 수 없습니다. 따라서 Interceptor는 스프링의 ApplicationContext에 등록된 빈을 주입받아 사용할 수 있는 반면, Filter는 그렇지 않습니다.
    • Interceptor는 컨트롤러의 메서드 호출 전후에 처리를 수행할 수 있으므로, 컨트롤러에 종속적인 기능을 수행할 수 있습니다. 반면, Filter는 요청과 응답을 가로채는 범위가 넓으므로, 컨트롤러에 종속적이지 않습니다.
    • Interceptor와 Filter는 각각의 범위에서 처리하고, AOP는 여러 객체에서 공통으로 수행되는 횡단 관심사를 모듈화하여 처리합니다.

     

    댓글

Designed by Tistory.