aspectj 不拦截注释 class 的构造函数
aspectj not intercepting constructors where class is annotated
我想拦截所有 class 带有特定注释的构造函数调用。
我有这样的相位:
@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 正在拦截调用。此外,如果我创建一个默认构造函数,然后用注释对其进行注释,它也可以工作。
但是,我希望注释存在于 class 上,这样如果我有 1 个或 10 个构造函数,它们都会被相同地拦截(我只需要将它放在 class).
看来如果我执行@within(ConstructorClassLevelExample),它就可以工作!
我想拦截所有 class 带有特定注释的构造函数调用。
我有这样的相位:
@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 正在拦截调用。此外,如果我创建一个默认构造函数,然后用注释对其进行注释,它也可以工作。
但是,我希望注释存在于 class 上,这样如果我有 1 个或 10 个构造函数,它们都会被相同地拦截(我只需要将它放在 class).
看来如果我执行@within(ConstructorClassLevelExample),它就可以工作!