Измерение времени выполнения аннотированного метода @Async с помощью asprctj - PullRequest
0 голосов
/ 21 октября 2019

Как измерить время выполнения аннотированного метода @Async с помощью аспекта в весенней загрузочной программе

1 Ответ

0 голосов
/ 21 октября 2019

Да, вы можете достичь этой цели следующими способами. Вам просто нужно обойти аспект для расчета времени по конкретной функции.

Ниже приведен код:

@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;
    }
}
...