2025-11-10

오늘 배운 것

Filter VS Interceptor VS AOP

Filter (서블릿 레벨)

  • 개념
    • Servlet Container에서 동작하는 가장 낮은 수준의 요청/응답 전처리기
    • DispatcherServlet 앞단에서 작동
    • javax.servlet.Filter 인터페이스 구현
  • 주요 목적
    • 인코딩 처리, XSS/로그 필터링, 인증 토큰 검사 등
    • 스프링 외부에서 서블릿 수준의 요청 전체에 개입 가능
  • 실행 시점
    • 요청이 DispatcherServlet에 도달하기 전/후

DispatcherServlet이란?

  • 개념
    • Spring MVC의 중앙 제어기(Front Controller) 역할을 하는 서블릿
    • 클라이언트의 모든 요청을 받아 적절한 Controller로 전달하고, 처리 결과를 다시 응답으로 반환
  • 역할
    1. 클라이언트 요청 수신
    2. 어떤 컨트롤러로 전달할지 결정 (HandlerMapping)
    3. 컨트롤러 실행 (HandlerAdapter)
    4. 실행 결과를 View로 반환 (ViewResolver)
    5. 응답 반환

Interceptor (스프링 MVC 레벨)

  • 개념
    • Spring MVC의 DispatcherServlet 이후, Controller 호출 전후에서 동작
    • HandlerInterceptor 인터페이스 구현
  • 주요 목적
    • 인증/인가 체크 (예: 로그인 필요 API 접근 차단)
    • Controller에 전달하기 전, ModelAndView 조작 등
  • 실행 흐름
    • Filter -> DispatcherServlet -> Interceptor(preHandle) -> Controller -> Interceptor(postHandle, afterCompletion)

AOP (스프링 빈 레벨)

  • 개념
    • 메소드 실행 자체를 가로채는 기술
    • 주로 Service / Repository 계층의 공통 로직 (로깅, 트랜잭션, 성능 측정 등)에 사용
    • 프록시 기반으로 동작 (Spring AOP는 기본적으로 Proxy 기반)
  • 주요 목적
    • 중복되는 부가기능(로깅, 예외처리, 트랜잭션)을 공통 모듈로 분리
    • 코드 수정 없이 매서드 전/후/예외 시점에 동작
  • 실행 시점
    • 스프링 컨테이너 내부 Bean 호출 시, 프록시가 대신 실행

results matching ""

    No results matching ""