Spring AOP:继承的方法

时间:2014-03-11 15:19:52

标签: java spring inheritance aop

我正在使用Spring AOP 4.0.x. 我有下一堂课:

class A {
    public void methodA() {
        // ...
    }
}

class B extends A {
    public void methodB() {
        // ...
    }
}

class C extends A {
    public void methodC() {
        // ...
    }
}

我想为B类中继承的方法A 添加一个仅针对 的建议。

问题在于,如果我使用下一个切入点来实现它

execution(* package.B+.method*(..))

然后即使类 C 中的继承 methodA 引发异常,也会执行建议。

如何让Spring知道方法A 已经抛出异常作为类 B 的继承方法,而不是 C 一个?

谢谢。

更新

我现在找到的唯一解决方案是使用下一个表达式:

execution(* package.B.method*(..)) || 
    (execution(* package.A.method*(..)) && target(package.B))

,但看起来有更简洁优雅的解决方案。

0 个答案:

没有答案