AspectJ切入点:控制流与类初始化指示符详解
1. 通配符在切入点签名中的使用
在匹配新的切入点与 UpdateIt
代码时,我们会得到与之前相同的输出。此时,我们无需指定所有参数,也无法访问它们。可以在连接点签名的最后部分使用通配符。例如:
pointcut updatePC(String arg1) :
call(public void update(String, int, ..)) &&
args(arg1, ..);
before(String arg1) : updatePC(arg1) {
System.out.println(thisJoinPoint.toLongString());
System.out.println(arg1);
}
这里我们将“..”通配符的位置进行了调整,使其成为连接点签名的最后部分,因为我们只关注第一个参数。切入点签名和通知只需要 args
指示符返回的单个参数。
2. 基于控制流的指示符
在之前的示例中,我们在整个应用程序中匹配连接点,而不考虑连接点的起源。例如,我们能够捕获对 DVD
对象上 setLocation()
方法的所有调用。 setLocation()
方法是 Location
属性的访问器函数,并且被定义为公共的,这意味着任何人都可以调用它。从相关代码中可以看到, s