Java 如何在aspectj中将一个方面方法与多个方法关联?

Java 如何在aspectj中将一个方面方法与多个方法关联?,java,annotations,aspectj,Java,Annotations,Aspectj,我有一门课a: @Service public class A { public void goX() { System.out.println("goX"); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } public void

我有一门课
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类
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);
    }
}
然后我可以计算方法
AOP.calExecTime()
执行A.goX()所需的时间

我想用同样的方法计算
A.goX()
A.goY()
的时间
AOP.calExecTime()
,我不知道如何在
@周围的
注释中编写东西。有人能帮我吗?非常感谢。

这可能会有所帮助

@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);

    }

   }

谢谢回复!如果
goX
goY
属于不同的类别,该怎么办?如果有任何方法可以在
@中写入和执行
?是的,您可以在(您的包。*)中使用,而不是执行。无论这个包中有多少个类,您的方法calExecTime都将为所有类调用。但是请确保这不会产生任何内存问题。我已经在答案中更新了同样的内容。也请在这里了解更多关于AOP的信息。