Spring WebFlux获取Request对象工具

3.1 WebFilter获取并保存 首先,在WebFilter中获取Request对象并保存,代码如下: @Configuration@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE)public class ReactiveRequestContextFilter implements WebFilter {@Overridepublic Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {ServerHttpRequest request = exchange.getRequest();return chain.filter(exchange).subscriberContext(ctx -> ctx.put(ReactiveRequestContextHolder.CONTEXT_KEY, request));}} 从ServerWebExchange中获取到ServerHttpRequest对象,再通过put方法把它放进Context里。 3.2 工具类Holder 实现一个工具类来提供静态方法,在Filter后的任何场景都可以使用: public class ReactiveRequestContextHolder {public static final Class<ServerHttpRequest> CONTEXT_KEY = ServerHttpRequest.class; public static Mono<ServerHttpRequest> getRequest() {return Mono.subscriberContext().map(ctx -> ctx.get(CONTEXT_KEY));}} 3.3 在Controller中使用 我们尝试在Controller中使用ReactiveRequestContextHolder来获取Request: @RestControllerpublic class GetRequestController { @RequestMapping(“/request”)public Mono<String> getRequest() {return […]