我正在尝试将切入点应用于子类中的已实现方法,但是没有围绕此切入点调用AspectMethod。 以下是我的配置和代码:
public abstract class ParentClass {
protected abstract void buildResponse(QueryResponse qryResp,ContentSearchServiceResponseImpl cssResp);
}
public class ChildClass extends ParentClass {
@override
public void buildResponse(QueryResponse qryResp,ContentSearchServiceResponseImpl ssResp){
//doSomething
}
切入点:
<aop:pointcut id="pointcutId"
expression="execution(public * ParentClass.buildResponse(..))" />
OR
<aop:pointcut id="pointcutId"
expression="execution(protected * ParentClass.buildResponse(..))" />
OR
<aop:pointcut id="pointcutId"
expression="execution(public * ParentClass+.buildResponse(..))" />
对于任何上述切入点的配置,尚未创建Aspect。我已经尝试了几乎所有内容。如果有人对此有所了解......我不能直接使用Child Class的名称,因为在我的情况下,多个子类正在实现这个抽象方法
答案 0 :(得分:5)
尝试
execution(public * buildResponse(..)) && within(ParentClass+)
或
execution(public * buildResponse(..)) && target(ParentClass+)
另外请记住,如果您使用的是“标准”基于Spring代理的AOP,那么类内部的调用(一个方法调用同一个类中的另一个方法)不会受到任何建议。