Как связать один аспектный метод с несколькими методами в aspectj?
У меня есть класс A
:
@Service
public class A {
public void goX() {
System.out.println("goX");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void goY() {
System.out.println("goY");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
и класс АОП AOP
:
@Aspect
@Service
class AOP {
@Around("execution(* com.test.A.goX(..))")
public void calExecTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
long t1 = System.currentTimeMillis();
proceedingJoinPoint.proceed();
long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
}
}
Тогда я могу посчитать время A.goX()
требуется выполнить методом AOP.calExecTime()
,
То, что я хочу, это рассчитать время для обоих A.goX()
а также A.goY()
тем же методом AOP.calExecTime()
Я не знаю, как писать вещи в @Around
аннотаций. Кто-нибудь может мне помочь? Большое спасибо.
1 ответ
Решение
Это могло бы помочь.
@Aspect
@Service
class AOP {
@Around("within(* com.test.*)")
public void calExecTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
long t1 = System.currentTimeMillis();
proceedingJoinPoint.proceed();
long t2 = System.currentTimeMillis();
System.out.println("Method "+ proceedingJoinPoint.getSignature().getName() + " time : "+ t2-t1);
}
}