2
public abstract class AService<T> {
public T needsToBeAdvised(T param) {
T result = doSomething(param);
return result;
}
}
@Service
public class BService extends AService<B> {
@Override
public T needsToBeAdvised(T param) {
return super.needsToBeAdvised(param);
}
}
@Service
public class CService extends AService<C> {}
// (B & C implement an interface AType)
@Component
@Aspect
public class MyAspect {
@Pointcut("execution(* package.AService+.needsToBeAdvised(*))")
private void aNeedToBeAdvised() {}
@AfterReturning(pointcut="aNeedToBeAdvised()", returning="param")
public void interceptNeedsToBeAdvised(JoinPoint joinPoint, AType param) {
// some action
}
}
をオーバーライドしていませんか?春AOPスーパークラスのメソッドをアドバイスし、この設定を考えると、サブクラスで
EDIT:
私はBService
とCService
の両方が同じパッケージ内にあることを追加する必要があります。
私は次のように私のポイントカットを変更する場合:私はCService
に感謝を追加します。彼らは同じパッケージに入っています。上記の編集を参照してください。 – mantithetical