SpringMVCInterceptor实现性能监控的功能代码-创新互联

利用Spring MVC 的 Interceptor 实现个简易的性能监控,计算一下每个url的执行时间。

霸州网站建设公司创新互联公司,霸州网站设计制作,有大型网站制作公司丰富经验。已为霸州上千提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的霸州做网站的公司定做!

在 preHandle 方法中记录当前的时间戳到线程局部变量里,然后在afterCompletion方法中,用当前的时间戳剪掉线程局部变量里的时间戳得出个运行时间,并记录到log里。

这只是个简易的性能监控,如果想长期正式的监控性能,请选择其它成熟的产品。

Interceptor

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.NamedThreadLocal;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
 
 
public class PerformanceInterceptor implements HandlerInterceptor {
 
  private final static Logger LOGGER = LoggerFactory.getLogger(PerformanceInterceptor.class);
 
  private NamedThreadLocal startTimeThreadLocal = new NamedThreadLocal("performance");
 
  @Override
  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
      throws Exception {
    startTimeThreadLocal.set(System.currentTimeMillis());
    return true;
  }
 
  @Override
  public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
      ModelAndView modelAndView) throws Exception {
    return;
  }
 
  @Override
  public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
      throws Exception {
    long currentTime = System.currentTimeMillis();
    long executeTime = currentTime - startTimeThreadLocal.get();
    LOGGER.info("uri:{} 执行了 {} 毫秒", request.getRequestURI(), executeTime);
  }
 
}

分享标题:SpringMVCInterceptor实现性能监控的功能代码-创新互联
转载源于:http://pwwzsj.com/article/dsehgs.html