Контроллер-перехватчик, который обрабатывает аннотацию конечной точки в WebFlux - PullRequest
0 голосов
/ 07 сентября 2018

Моя команда находится в процессе миграции наших расширений Spring MVC на WebFlux.

У нас есть функция, которая позволяет нашим клиентам настраивать метрику метода контроллера.Для этого мы создали нашу аннотацию, которая обрабатывается HandlerInterceptorAdapter.

Проблема в том, что я не вижу никакого аналога в Spring WebFlux.Я не могу использовать WebFilter, потому что Spring еще не знает, какая конечная точка будет вызвана.Как я могу это реализовать?

Ближайший обходной путь, который я нашел, - это использовать RequestMappingHandlerMapping и каким-то образом построить карту Map<String(path), HandlerMethod>, но, на мой взгляд, это громоздко и подвержено ошибкам.

Есть лиЕсть ли лучший способ решить эту проблему?

Редактировать:

Это выглядит так

public class MeteredHandlerInterceptor extends HandlerInterceptorAdapter {

public MeteredHandlerInterceptor() {
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    // I save start time of method
    return true;
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    // I read endpoint method from the HandlerMethod, I apply any customisation by our custom @MeteredEndpoint annotation (for example custom name) and I save it in MeterRegistry
}
}

Я еще не закодировал обходной путь, потому что не хотел тратить времяв нем, но я вижу, что могу получить HandlerMethod для пути, но я не уверен, что получу такой же HandlerMethod, как обычно, когда вызывается контроллер.

...