java 使用拦截器统计每个http请求的响应时间

版权声明:Summer https://blog.csdn.net/csdnyanglei/article/details/81192898
    @Configuration
    public class BootWebAppConfigurer extends WebMvcConfigurerAdapter {
    	@Override
    	public void addInterceptors(InterceptorRegistry registry) {
    		registry.addInterceptor(new BootInterceptor()).addPathPatterns("/**");
    		super.addInterceptors(registry);
  }
}


/***
 * 拦截器,单例
 */
public class BootInterceptor implements HandlerInterceptor {
    public final AtomicLong _count = new AtomicLong();// 计数器
 
    // 1
    public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) {
        long begin_nao_time = System.nanoTime();
        String realIp = HttpHeadTool.getRealIpAddr(req);
        req.setAttribute("p_real_ip", realIp);
        req.setAttribute("begin_nao_time", begin_nao_time);
        return true;
    }
 
    /*3*/
    public void afterCompletion(HttpServletRequest req, HttpServletResponse resp, Object arg2, Exception arg3)
            throws Exception {
        long begin_nao_time = (Long) req.getAttribute("begin_nao_time");
        String real_ip = (String) req.getAttribute("p_real_ip");
        long interval = System.nanoTime() - begin_nao_time;
        String uri = req.getRequestURI();
        StatsManager.inst().statsUri(uri, interval);//统计费时
    }
 
    /* 2 */
    public void postHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2, ModelAndView arg3)throws Exception {}
}

猜你喜欢

转载自blog.csdn.net/csdnyanglei/article/details/81192898
今日推荐