如何将一个方面方法与aspectj中的多个方法相关联?

时间:2013-10-17 09:34:21

标签: 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 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);
    }
}

然后我可以通过方法A.goX()计算AOP.calExecTime()执行的时间。

我想要的是通过相同的方法计算A.goX()A.goY()的时间AOP.calExecTime() ,我不知道如何写东西在@Around注释中。任何人都可以帮我吗?非常感谢。

1 个答案:

答案 0 :(得分:3)

这可能有所帮助。

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

    }

   }