1
鉴于my.package
下面的示例类...澄清了Spring的AOP切入点和继承
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?
我觉得我缺少的切入点是如何与继承交互,从而欠引擎盖解释/ DOC可能会很长的路要走一些基本的道理。
没有通知将被应用,因为酒吧是不是一个“代理豆”,你不能手动实例化一个必须被建议的类......它必须被定义为Spring Bean:http://static.springsource.org/spring/docs/3.0.0.M3/spring-framework-reference/html/ch08s06 .html#aop-understanding-aop-proxies – davorp
也是很好的使用接口,并在这些接口上定义切入点,而不是在实现上:http://static.springsource.org/spring/docs/3.0.0.M3/弹簧框架参考/ HTML/ch08.html#AOP-引入的代理 – davorp