具有多个注释的方法的AspectJ切入点

时间:2015-08-13 17:53:44

标签: java annotations aop aspectj spring-aop

使用加载时编织,纯粹的AspectJ。

我们有2个注释@Time@Count,以及一些带注释的方法。

@Time (name="myMethod1Time")
@Count (name="myMethod1Count")
public void myMethod1(){..};

@Time (name="myMethod2Time")
public void myMethod2(){..};

@Count (name="myMethod3Count")
public void myMethod3(){..};

现在,我正在为myMethod1定义我自己的方面,它有多个注释:

// multiple annotations, not working
@Around("@annotation(time) && @annotation(count))
public Object myAspect(Time time, Count count) {..}

这不起作用。但是,捕获方法myMethod2可以使用单个注释正常工作:

// single annotation, is working
@Around("@annotation(time))
public Object myAnotherAspect(Time time) {..}

我想只捕获签名中存在TimeCount注释的方法,我想使用注释值。有谁知道如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

也许结合2个切入点,如:

@Around("call(@Time * *(..)) && call(@Count * *(..))");