IT/개발자 면접

Spring Filter와 Interceptor

Collin 2023. 12. 11. 09:00
반응형

 

Spring Filter와 Interceptor

 

 

1. Spring Filter:

  • 특징:
    • Servlet 기반: Spring Filter는 Servlet 기술에서 파생된 기능으로, Servlet Container 레벨에서 동작합니다.
    • Request/Response 처리: 클라이언트의 요청(Request)이 서버에 도착하기 전에 처리되는 필터로, 주로 Request와 Response를 수정하거나 검사하는 용도로 사용됩니다.
    • Web.xml 또는 Java Config에서 설정: web.xml 파일이나 Java Config에서 설정하며, URL 패턴을 기반으로 동작합니다.
  • 장점:
    • 최하위 레벨에서 동작: Filter는 Servlet Container 내부에서 동작하므로 모든 요청에 대해 동일한 방식으로 처리할 수 있습니다.
  • 단점:
    • Spring 컨텍스트 외부: Filter는 Spring 컨텍스트 외부에서 동작하므로 Spring의 빈이나 ApplicationContext에 직접적인 접근이 어려워집니다.

 

 

2. Spring Interceptor:

  • 특징:
    • Spring 컨텍스트 내부: Interceptor는 Spring의 MVC 구조에서 동작하며, Spring 컨텍스트 내부에서 작동합니다.
    • Handler 실행 전/후 처리: Controller의 Handler 실행 전/후에 동작하며, 주로 인증, 로깅, 트랜잭션 관리 등의 업무를 수행합니다.
    • HandlerInterceptor 인터페이스 구현: HandlerInterceptor 인터페이스를 구현하여 동작하며, preHandle, postHandle, afterCompletion 등의 메서드를 제공합니다.
  • 장점:
    • Spring 컨텍스트 내부에서 동작: Spring의 빈이나 ApplicationContext에 쉽게 접근할 수 있습니다.
    • Handler 단위로 구분 가능: Controller의 특정 Handler에만 적용하고 싶은 경우에 유연하게 설정할 수 있습니다.
  • 단점:
    • Handler 단위로 동작: Interceptor는 주로 Controller의 Handler 단위로 동작하므로, 모든 요청에 대해 동일한 방식으로 처리하기 어렵습니다.

 

비교 및 사용 시 고려사항:

  • Spring Filter 선택 시:
    • 모든 요청에 대해 동일한 로직을 적용하려는 경우.
    • Spring 컨텍스트 외부에서의 설정 및 동작이 필요한 경우.
  • Spring Interceptor 선택 시:
    • Controller의 특정 Handler에만 적용하려는 경우.
    • Spring 컨텍스트 내부에서의 설정 및 동작이 필요한 경우.
    • Handler 단위로 세밀한 제어가 필요한 경우.

 

장단점 비교:

  • Filter 장점:
    • 최하위 레벨에서 동작하여 모든 요청에 대해 일관된 방식으로 처리 가능.
  • Filter 단점:
    • Spring 컨텍스트 외부에서 동작하므로 Spring 빈이나 ApplicationContext에 직접적인 접근이 어려움.
  • Interceptor 장점:
    • Spring 컨텍스트 내부에서 동작하여 Spring 빈이나 ApplicationContext에 쉽게 접근 가능.
    • Handler 단위로 구분 가능하여 세밀한 제어가 가능.
  • Interceptor 단점:
    • Handler 단위로 동작하므로 모든 요청에 대해 동일한 방식으로 처리하기 어려움.
반응형