Aspectj不会拦截带注释的构造函数

时间:2018-12-05 18:13:34

标签: java aspectj

我想拦截所有使用特定注释对类进行注释的构造函数调用。

我有一个这样的方面:

@Aspect
public class ConstructorClassLevelAspect {
  @Before(
      "execution(*.new(..)) && @annotation(ConstructorClassLevel)")
    public void doConstructorClassLevel(
      JoinPoint point) throws Throwable {
    System.out.println("constructed" + point);
  }
}

和一个实例:

@ConstructorClassLevel
public class ConstructorClassLevelExample {

}

现在,如果我更改外观并删除@annotation过滤器,那么我看到Aspectj正在拦截该调用。另外,如果我创建一个默认的构造函数,然后用注释对其进行注释,那么它也可以使用。

但是,我希望注释能够存在于类中,这样,如果我有1个构造函数或10个构造函数,它们都将被相同地拦截(并且我只需要将其放在类上)即可。

1 个答案:

答案 0 :(得分:0)

如果我使用@within(ConstructorClassLevelExample),似乎可以!