Да, аспекты должны работать. Вот небольшой пример для пружинного пакета
private final Logger log = LoggerFactory.getLogger(this.getClass());
@Pointcut("within(@org.springframework.stereotype.Repository *)")
public void springBeanPointcut() {
}
@Around("springBeanPointcut()")
public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable {
if (log.isDebugEnabled()) {
log.debug("Enter: {}.{}()",
joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName());
}
try {
Object result = joinPoint.proceed();
if (log.isDebugEnabled()) {
log.debug("Exit: {}.{}()",
joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName());
}
return result;
} catch (IllegalArgumentException e) {
log.error("Error:{}.{}()",
joinPoint.getSignature().getDeclaringTypeName(),
joinPoint.getSignature().getName());
throw e;
}
}
Настройте формат своего регистратора для регистрации журнала миллисекундного времени или просто поместите свой логический файл c, чтобы вычислить необходимое время.