嗨,我创建了一个 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/