3

我正在尝试将切入点应用于子类中已实现的方法,但未围绕此切入点调用 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(..))" />

或者

<aop:pointcut id="pointcutId"
            expression="execution(protected * ParentClass.buildResponse(..))" />

或者

<aop:pointcut id="pointcutId"
            expression="execution(public * ParentClass+.buildResponse(..))" />

对于Aspect上面的任何切入点配置都没有创建。我已经尝试了几乎所有东西。如果有人对此有一些想法......我不能直接使用子类的名称,因为在我的情况下,多个子类正在实现这个抽象方法

4

1 回答 1

6

尝试

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

或者

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

还要记住,如果您使用“标准”基于 spring 代理的 AOP,则类内部的内部调用(一个方法调用同一类中的另一个方法)不受任何建议的影响。

于 2012-11-01T13:19:22.600 回答