【发布时间】:2018-04-15 22:42:45
【问题描述】:
我在我的项目中使用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 spring-mvc spring-webflux