很难为此制定一个简洁的标题。
无论如何,想象一下我有一个父类:
public class Shape {
public Dimensions getDimensions() {
// Does some generic stuff.
}
}
我有一个派生类,它覆盖了 getDimensions 方法:
public class Circle extends Shape {
public Dimensions getDimensions() {
// Does some stuff.
super.getDimensions();
}
}
当我创建一个切入点 on 的切面时,Shape.getDimensions
切入点在被调用时被击中两次Circle.getDimensions
:一次 for Circle.getDimensions
,然后一次调用super.getDimensions
.
切入点如下所示:@Pointcut("execution(* Shape.getDimensions(..))")
我在建议中添加了一个 hack 来检查声明类型的名称(使用JoinPoint.getSignature().getDeclaringType().getName()
),但我觉得它相当粗糙,感觉有点像 hack。我认为必须有更好的方法来做到这一点。
有没有?
如果格式不是很好,请道歉。第一次在这里提问(我通常可以找到答案)。