使用asprctj的@Async注释方法的执行时间

问题描述 投票:0回答:1

如何在spring boot程序中借助aspectj来测量@Async注释方法的执行时间

spring-boot asynchronous aspectj
1个回答
0
投票

是的,您可以通过以下方式实现此目标。您只需要编写方面内容即可针对特定功能计算时间。

以下为代码:

@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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.