스프링 클라우드 게이트웨이의 Filter Chain은 다음과 같이 구성됩니다.
1. GlobalFilter (애플리케이션 전역 필터)
2. GatewayFilter (각 Route에 개별 설정된 필터)
요청 흐름:
Client Request
↓
DispatcherHandler
↓
RoutePredicateHandlerMapping (Predicate로 Route 매핑)
↓
FilteringWebHandler (핸들러, 필터 체인 실행)
↓
(GlobalFilter1) → (GlobalFilter2) → (GatewayFilter1) → ... → (핸들러 로직: WebHandler)
invoke
하여 필터들을 순차적으로 실행합니다.그럼 매번 FilteringWebHandler
에서 해당 Route 설정을 기반으로 새로운 Filter Chain을 구성합니까? 네, 정확히 맞습니다.
FilteringWebHandler
가 Filter Chain을 구성하는 시점을 다음과 같습니다.
RoutePredicateHandlerMapping
이 요청과 매칭되는 Route를 찾음FilteringWebHandler
는 이 Route의 GatewayFilter들과 GlobalFilter들을 합쳐서 Filter Chain을 구성즉, Route 매핑이 완료됭 이후 FilteringWebHandler
가 Route 기반으로 필터 체인을 만듭니다.