@Aspect
@Component
@Slf4j
public class MethodExecTimeAspect {
/**
* 切点:仅针对Controller的接口内的方法。
*/
@Pointcut("execution(public * com.william.small..*Controller.*(..))")
public void pointCut(){
}
/**
* 针对调用的接口(日志的形式)观察执行时间
* @param joinPoint
* @return
* @throws Throwable
*/
@Around("pointCut()")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable{
long startTime = System.currentTimeMillis();
log.info("执行方法:{},开始时间:{}" , joinPoint.getSignature().getName() , DateUtils.formatDate(new Date(startTime),DateUtils.DATE_TIME_PATTERN));
Object result = joinPoint.proceed();
long endTime= System.currentTimeMillis();
log.info("执行方法:{}, 用时:{} 毫秒, 结束时间:{} , " , joinPoint.getSignature().getName() , endTime-startTime , DateUtils.formatDate(new Date(endTime),DateUtils.DATE_TIME_PATTERN));
return result ;
}
}