从WebFlux中的WebFilter获取HandlerMethod

时间:2018-08-14 11:45:17

标签: spring-mvc filter attributes interceptor spring-webflux

使用Servlet API实现拦截器时,我开箱即用了HandlerMethod

... extends HandlerInterceptorAdapter
@Override
public boolean preHandle(final HttpServletRequest request,
                             final HttpServletResponse response, final Object handlerMethod) throws Exception {

在实施HandlerMethod而不是WebFilter时可以访问HandlerInterceptorAdapter吗?

如果是WebFilter,我有:

... implements WebFilter {
public Mono<Void> filter(ServerWebExchange serverWebExchange, WebFilterChain webFilterChain) {

一旦我可以通过调用HandlerMethod访问serverWebExchange.getAttribute("....bestMatchingHandler"),但是它不再起作用。参见corresponding question。我的问题是:如何在不使用HandlerMethod的情况下获得serverWebExchange.getAttribute

1 个答案:

答案 0 :(得分:3)

我找到了答案,这也有助于回答我原来的问题。 HandlerMethod可以这样获得:

(HandlerMethod) this.handlerMapping.getHandler(serverWebExchange).toProcessor().peek();

其中handlerMapping是类型RequestMappingHandlerMapping的bean,可以从WebFlux注入。