WebFilter에 대해 알아보자

러브굿·2025년 7월 13일

WebFilter란?

  • WebFilter는 WebFlux에서 제공하는 인터페이스로, 모든 HTTP 요청/응답 흐름을 비동기적으로 가로채는 필터입니다.
  • ServerWebExchange 객체를 통해 요청(Request)과 응답(Response) 모두 접근 가능.
  • 스프링 빈으로 등록되면 자동 적용되며, 순서를 조절하고 체이닝 구조로 동작합니다.
  • 서블릿 기반의 Filter와 유사하지만 Reactive 스트림(Mono/Flux) 기반으로 작동합니다.

WebFilter vs AOP 차이점

항목WebFilterAOP (@Around 등)
대상모든 HTTP 요청 (컨트롤러 포함)특정 메서드 또는 빈 대상
시점HTTP 요청 진입 시점메서드 실행 전후
주 용도인증/인가, CORS, 로깅, 헤더 조작, 시간 동기화 등트랜잭션, 비즈니스 로직 단위의 공통 처리
WebFlux 친화성✅ 완전 지원 (비동기 필터)⚠️ 기본 AOP는 블로킹 방식으로 주의 필요
동작 범위컨트롤러 뿐만 아니라 정적 리소스, 예외, 라우터 함수 포함 전체 요청메서드 단위에 국한됨

요약

  • HTTP 요청 흐름을 제어하고 싶다면 → WebFilter
  • 특정 Bean/메서드의 로직을 가로채고 싶다면 → AOP

실무 활용 예시

  • 요청마다 헤더 값을 확인해 인증 수행
  • timestamp가 필요한 외부 API 호출 전 서버 시간 동기화
  • 응답 결과 로깅 및 상태 코드 추적
  • 클라이언트 IP, User-Agent 분석 및 필터링
  • 특정 경로별 요청 차단 또는 리디렉션

마무리

Spring WebFlux 환경에서는 WebFilter가 AOP보다 HTTP 중심의 흐름 제어에 적합합니다.
비즈니스 로직에 가까운 공통 처리는 AOP로,
요청 레벨의 전역 처리(로깅, 인증, 헤더 조작 등)는 WebFilter로 분리하면 구조가 깔끔해집니다.

📌 참고: WebFilter는 RouterFunction 기반의 함수형 라우팅에도 동일하게 적용됩니다.

profile
마라토너형 개발자

0개의 댓글