Spring AOP:继承的方法

yas*_*dev 6 java inheritance aop spring

我使用的是Spring AOP 4.0.x. 我有下一堂课:

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

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

class C extends A {
    public void methodC() {
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

我想扔意见后添加一个为继承了methodA B类里面.

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

execution(* package.B+.method*(..))
Run Code Online (Sandbox Code Playgroud)

然后,即使C类中的继承方法A抛出异常,也会执行建议.

如何让Spring知道了methodA已抛出异常的类继承的方法,不C ^一个?

谢谢.

UPDATE

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

execution(* package.B.method*(..)) || 
    (execution(* package.A.method*(..)) && target(package.B))
Run Code Online (Sandbox Code Playgroud)

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