用于构造函数调用的AspectJ Pointcut

时间:2018-09-13 20:34:33

标签: java aop aspectj

我正在尝试写一条建议,以使用自定义注释来拦截对类的构造函数的调用:

@MyCustomAnnotation
public class SomeClass {

   public SomeClass(Foo a, Bar b){
      ...
   }

   public SomeClass(Foo a){
      this(a, null);
   }

}

我通常看到一个如何拦截构造函数调用的示例:

@Before("execution(*.new(..))")

如何将其更新为仅对使用我的@MyCustomAnnotation注释进行注释的类执行

1 个答案:

答案 0 :(得分:0)

我将其用于方法调用:

within(@MyCustomAnnotation *)

因此,最终的方面代码将是:

@Before("execution(*.new(..)) && within(@MyCustomAnnotation *)")

或者,尝试以下操作:

@Pointcut("execution(@MyCustomAnnotation *.new(..))")

我在这里指的是文档:https://blog.espenberntsen.net/2010/03/20/aspectj-cheat-sheet/

而且,它应该在理论上可行,但是我没有任何运气。