【发布时间】:2011-10-11 14:13:49
【问题描述】:
鉴于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?
我认为我错过了切入点如何与继承交互的一些基本事实,因此引擎盖下的解释/文档可能会有很长的路要走。
【问题讨论】:
-
不会应用任何建议,因为 Bar 不是“代理 Bean”,您不能手动实例化必须建议的类...必须将其定义为 Spring Bean:@987654321 @
-
而且最好使用接口,并在这些接口而不是实现上定义切入点:static.springsource.org/spring/docs/3.0.0.M3/…
标签: java aspectj spring-aop pointcut