gpt4 book ai didi

spring - Spring 5 WebFlux中的拦截器

转载 作者:行者123 更新时间:2023-12-04 19:29:05 25 4
gpt4 key购买 nike

我在我的项目中使用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);

}
...
...

我想向我的应用程序添加类似的功能,并拦截每次调用所花费的时间。

提前致谢。

最佳答案

Spring WebFlux中没有HandlerInterceptor的概念,但是您可以使用自己的WebFilter代替。

您所描述的功能听起来很像执行器和千分尺提供的指标支持。如果您想尝试一下:

  • 将执行器依赖项添加到项目
  • 公开the relevant endpoints(此处为metrics)
  • 转到"/actuator/metrics并选择服务器HTTP请求的度量标准(请参阅the reference documentation)。

  • 千分尺提供了更多方法,并可以帮助您正确设置指标,例如:在测量时间时考虑GC暂停,提供直方图/百分位数/...等。

    注意:将 spring-boot-starter-web添加到您的应用程序会将其变成Spring MVC应用程序。

    关于spring - Spring 5 WebFlux中的拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47091717/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com