我在用Spring WebFlux
在我的项目中。我想创建一个拦截器来计算每个 API 所花费的时间。在Spring MVC
我们有HandlerInterceptor
不存在于spring-boot-starter-webflux
。我尝试添加spring-boot-starter-web
并编写了我的拦截器,但它不起作用。这是代码:
@Component
public class TimeInterceptor implements HandlerInterceptor {
public static Logger logger = Logger.getLogger(TimeInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
long startTime = System.currentTimeMillis();
request.setAttribute("startTime", startTime);
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
long totaltime = System.currentTimeMillis() - (long) request.getAttribute("startTime");
request.setAttribute("totaltime", totaltime);
logger.info("Logging total time" + totaltime);
}
...
...
我想向我的应用程序添加类似的功能并拦截每次调用所花费的时间。
提前致谢。
如果您想在请求开始和完成时处理请求,可以使用网页过滤器.
尝试这样的事情
@Component
public class CustomWebFilter implements WebFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
long startTime = System.currentTimeMillis();
return chain.filter(exchange).doFinally(signalType -> {
long totalTime = System.currentTimeMillis() - startTime;
exchange.getAttributes().put("totalTime", totalTime);
System.out.println(totalTime);
});
}
}
当请求处理开始时,所有定义的过滤器都会被调用。单声道从过滤器返回。它指示请求处理何时完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)