3

childclass に実装されたメソッドにポイントカットを適用しようとしていますが、このポイントカットの周りで 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(..))" />

上記のポイントカットの構成のいずれについても、アスペクトが作成されていません。私はほとんどすべてを試しました。誰かがこれについて何らかの考えを持っている場合...私の場合、複数の子クラスがこの抽象メソッドを実装しているため、子クラスの名前を直接使用することはできません

4

1 に答える 1

6

試す

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

また

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

また、「標準」のSpringプロキシベースのAOPを使用している場合、クラス内の内部呼び出し(1つのメソッドが同じクラスの別のメソッドを呼び出す)はアドバイスの対象にならないことに注意してください。

于 2012-11-01T13:19:22.600 に答える