如何在spring boot程序中借助aspectj来测量@Async注释方法的执行时间
是的,您可以通过以下方式实现此目标。您只需要编写方面内容即可针对特定功能计算时间。
以下为代码:
@Component
@Aspect
public class AsynMethodTimeAspect {
@Around(value = "@annotation(org.springframework.scheduling.annotation.Async)")
public Object logTime(ProceedingJoinPoint joinPoint) throws Throwable {
MethodSignature signature = (MethodSignature) joinPoint.getSignature();
Method method = signature.getMethod();
String myClassname = joinPoint.getSignature().getDeclaringType().getSimpleName() + " : " + joinPoint.getSignature().getName();
long start = System.currentTimeMillis();
Object proceed = joinPoint.proceed();
long elapsedTime = System.currentTimeMillis() - start;
log.info(myClassname + "." + method + " - end - " + elapsedTime + "ms");
return proceed;
}
}