SpringFrameWork/SpringCloud
GlobalFilter
LeeDaniel
2025. 9. 16. 15:02
package org.springframework.cloud.gateway.filter; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; public interface GlobalFilter { // ServerWebExchange exchange // -HTTP 요청/응답과 관련된 컨텍스트를 담고 있음 // -요청 헤더, URI, 쿼리 파라미터 등을 읽거나 수정 가능 // GatewayFilterChain chain // -필터 체인의 나머지를 실행할 수 있는 객체 // -chain.filter(exchange)를 호출해야 다음 필터로 제어가 넘어가며 // 호출하지 않으면 체인이 중단 // Mono<Void> // -리액티브 체인에서의 비동기 완료 신호를 의미 Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain); }
import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.core.Ordered; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; @Component public class LoggingGlobalFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { System.out.println("Request Path: " + exchange.getRequest().getURI()); return chain.filter(exchange).then( Mono.fromRunnable(() -> { System.out.println("Response Status: " + exchange.getResponse().getStatusCode()); }) ); } @Override public int getOrder() { return -1; // 숫자가 낮을수록 먼저 실행 } }
▶️Spring Cloud Gateway 전역 필터를 정의하는 인터페이스
▶️모든 요청/응답에 적용되며, 로깅, 보안, 트래픽 관리 같은 공통 처리 로직에 적합
▶️순서 제어가 가능하며, 리액티브 체인(Mono<Void>) 기반으로 동작
728x90
반응형