切入点未应用于抽象方法

时间:2012-11-01 07:21:41

标签: spring spring-aop

我正在尝试将切入点应用于子类中的已实现方法,但是没有围绕此切入点调用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的名称,因为在我的情况下,多个子类正在实现这个抽象方法

1 个答案:

答案 0 :(得分:5)

尝试

execution(public * buildResponse(..)) && within(ParentClass+)

execution(public * buildResponse(..)) && target(ParentClass+)

另外请记住,如果您使用的是“标准”基于Spring代理的AOP,那么类内部的调用(一个方法调用同一个类中的另一个方法)不会受到任何建议。