Да, вы можете достичь этой цели следующими способами. Вам просто нужно обойти аспект для расчета времени по конкретной функции.
Ниже приведен код:
@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;
}
}