- 利用reactor的上下文机制:reactor.util.context.Context(类似ThreadLocal)
Mono.empty().contextWrite(ctx->ctx.put("key", "保存内容"));
- 利用WebFilter获取ServerHttpRequest并保存至上下文
@Bean @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE) public WebFilter reactiveRequestContextFilter() { return (exchange, chain) -> { ServerHttpRequest request = exchange.getRequest(); return chain.filter(exchange) .contextWrite(ctx -> ctx.put(ServerHttpRequest.class, request)); }; }
- 后续拿出ServerHttpRequest对象
public static Mono<ServerHttpRequest> getRequest() { return Mono.deferContextual(ctx -> Mono.just(ctx.get(ServerHttpRequest.class))); }
12-08
1507
01-10
899
03-16
1万+
01-26
2153
06-13