最近遇到一个问题,在仓库进行作业时,手持端经常出现卡顿情况,为了确认是否与系统相关,在所有接口上加上时间监控,查看接口调用时间。
@Aspect @Component public class InvokeTimeAdvice { private static final Integer TIMEOUT = 0; protected Logger logger = LoggerFactory.getLogger(InvokeTimeAdvice.class); @Pointcut("execution(public * com.ypsx.wms.web.controller.*.*.*(..))") public void pointCut() { } @Around(value = "pointCut()") public Object logInvokeTime(ProceedingJoinPoint joinPoint) throws Throwable { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); long start = System.currentTimeMillis(); try { return joinPoint.proceed(); } finally { long end = System.currentTimeMillis(); long duration = end - start; if (duration >= TIMEOUT) { String methodName = joinPoint.getSignature().getName(); logger.info(开始时间:" + start + ",结束时间:" + end + ",方法执行时长" + duration + "ms,方法名为" + methodName); } } } }