make org.springframework.web.reactive.result.method.RequestMappingInfoHandlerMapping#getHandlerInternal can be repeated call by caching HandlerMethod in ServerWebExchange's attributes .
In some scenes, I need get HandlerMethod info before org.springframework.web.reactive.DispatcherHandler, such as WebFilter
public class MetaFilter implements WebFilter, Ordered {
public MetaFilter(List<HandlerMapping> mappings) {
this.handlerMappings = mappings;
}
@Override
public Mono<Void> filter(@NonNull ServerWebExchange exchange, WebFilterChain chain) {
return Flux.fromIterable(this.handlerMappings)
.concatMap(mapping -> mapping.getHandler(exchange))
// other code;
}
}
To avoid duplicate search for HandlerMethod in mapping.getHandler
, I suggest implementing a cached getHandlerInternal.