springaop:继承的方法

qc6wkl3g  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(147)

我使用的是springaop4.0.x。我有接下来的课程:

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

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

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

我只想为类b中继承的methoda添加一个after抛出建议。
问题是如果我使用下一个切入点来实现它

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

然后,即使类c中继承的methoda抛出异常,也会执行通知。
如何让spring知道methoda抛出了一个异常作为类b的继承方法,而不是类c的继承方法?
谢谢您。
更新
到目前为止,我找到的唯一解决方案是使用下一个表达式:

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

,但似乎有更简洁优雅的解决方案。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题