【发布时间】:2016-10-20 11:59:52
【问题描述】:
我想在 spring mvc 项目中获得完整的执行流程以及它们的执行时间。
public class MetricsInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (handler instanceof HandlerMethod) {
HandlerMethod hm = (HandlerMethod) handler;
Method method = hm.getMethod();
if (method.getDeclaringClass().isAnnotationPresent(Controller.class)) {
if (method.isAnnotationPresent(Metrics.class)) {
// System.out.println(method.getAnnotation(Metrics.class).value());
System.out.println(method.getName());
}
}
}
return super.preHandle(request, response, handler);
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
super.postHandle(request, response, handler, modelAndView);
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
super.afterCompletion(request, response, handler, ex);
}
}
我正在获取带有 @Metrics 注释的控制器类和方法来记录少数方法的指标。我想要的是获得整个方法执行流程(Controller-->Service-->DAO)以及每个方法所花费的时间。无论如何可以在 postHandle() 或 afterCompletion() 中获取该信息。请提出建议。
【问题讨论】:
-
一个快速的技巧是使用 new Exception().getStracktrace() 来获取整个流程,但它不会给你花费的时间
标签: java spring spring-mvc spring-aop