не работает сервлетный фильтр javax с реактором Mono - PullRequest
0 голосов
/ 21 апреля 2020

Привет! Я создал приложение с весенней загрузкой, в котором я использую Mono реактивный. Теперь я хотел сделать некоторые записи до и после запроса. Для этого я использую javax.servelet.filter вот так

@Component
@Order(1)
public class RequestLoggingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest= (HttpServletRequest) request;
        HttpServletResponse httpRespnse = (HttpServletResponse) response;

        new CustomLogger().getColorLogger().info("dsfsdfsf");
        chain.doFilter(request, response);
        new CustomLogger().getColorLogger().info("sdfsdfsfsdf");
    }
}

Но оба журнала печатаются одновременно ... и тогда начинается мое выполнение. Я не знаю, что я делаю не так. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 21 апреля 2020

Я предполагаю, что вы используете Spring Webflux здесь. Spring webflux поставляется с собственным механизмом фильтрации.

Вы можете использовать org.springframework.web.server.WebFilter

Пример

@Component
public class DemoFilter implements WebFilter {

    @Override
    public Mono<Void> filter(ServerWebExchange serverWebExchange, 
      WebFilterChain webFilterChain) {

        // filter logic here.
        return webFilterChain.filter(serverWebExchange);
    }
}
...