关于 Spring-AOP 切入点和继承的澄清
给定 my.package 中的以下示例类...
public class Foo {
public void logicNotInBar() {/*code*/}
public void logicBarOverrides() {/*code*/}
}
public class Bar extends Foo {
public void logicBarOverrides() {/*code*/}
}
以及以下 Spring-AOP 切入点...
<aop:pointcut id="myPointcutAll" expression="execution(* my.package.*.*(..))" />
<aop:pointcut id="myPointcutFoo" expression="execution(* my.package.Foo.*(..))" />
<aop:pointcut id="myPointcutBar" expression="execution(* my.package.Bar.*(..))" />
将建议应用于 Bar 实例上的上述切入点的结果是什么?特别是......
Bar bar = new Bar();
bar.logicNotInBar(); // will myPointcutBar advice trigger?
bar.logicBarOverrides(); // is myPointcutFoo ignored here?
我认为我错过了切入点如何与继承交互的一些基本事实,因此底层的解释/文档可能会大有帮助。
Given the following example classes in my.package
...
public class Foo {
public void logicNotInBar() {/*code*/}
public void logicBarOverrides() {/*code*/}
}
public class Bar extends Foo {
public void logicBarOverrides() {/*code*/}
}
and the following Spring-AOP pointcuts...
<aop:pointcut id="myPointcutAll" expression="execution(* my.package.*.*(..))" />
<aop:pointcut id="myPointcutFoo" expression="execution(* my.package.Foo.*(..))" />
<aop:pointcut id="myPointcutBar" expression="execution(* my.package.Bar.*(..))" />
What is the result of advice applied to the above pointcuts on instances of Bar? In particular...
Bar bar = new Bar();
bar.logicNotInBar(); // will myPointcutBar advice trigger?
bar.logicBarOverrides(); // is myPointcutFoo ignored here?
I think I am missing some basic truth of how pointcuts interact with inheritance so an under-the-hood explanation/doc would probably go a long way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
来自 aspectj 文档:
From aspectj documentation: