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)
,但看起来有更简洁和优雅的解决方案.