javax servlet 过滤器不适用于 Mono react 器

标签 java servlet-filters project-reactor

嗨,我创建了一个 Spring Boot 应用程序,在其中使用 Mono 响应式(Reactive)。 现在我想在请求之前和之后进行一些日志记录。为此,我使用 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");
    }
}

但是两个日志同时打印......然后我的执行开始。我不知道我做错了什么。谁能帮我吗?

最佳答案

我假设您在这里使用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);
    }
}

关于javax servlet 过滤器不适用于 Mono react 器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61342832/

相关文章:

java - 创建jar文件时出错: NoClassDefFoundError

java - 过滤器在 Struts2 中不起作用

java - Servlet 过滤器(自动登录)优先于声明性安全检查

jsf - 为什么 JSF 会点击 xhtml 页面 3 次

java - Project Reactor 和 Java 内存模型

java - Reactor Flux 发布方法

Java虚拟机实现iadd微命令即兴

java - 使用 TreeMap 而不是 HashMap 的 guava multimap?

java - 调用需要 API 级别 26(当前最小值为 23): java. time.Instant#now

java - 如果进行单个同步调用,Webflux 会发生什么?