如何控制spring aop 拦截顺序
悬赏:5 发布时间:2008-08-04 提问人:hyxkangta123 (初级程序员)
spring aop中对同一个joinpoint的两个before advice (a 和 b) ,如何实现先对a后对b进行拦截
以前我试过把a放在前面,b放在后面,但有时候却不是按照这样的顺序
谢谢
@Before("somePointCut()")
public void b() {
//doSomeThing
}
@Before("somePointCut()")
public void a() {
//checking
}
以前我试过把a放在前面,b放在后面,但有时候却不是按照这样的顺序
谢谢
采纳的答案
2008-08-04 lggege (资深程序员)
Spring文档说明:
引用
6.2.4.7. 通知(Advice)顺序
如果有多个通知想要在同一连接点运行会发生什么?Spring AOP 的执行通知的顺序跟AspectJ的一样。... 对于定义在相同切面的通知,根据声明的顺序来确定执行顺序。比如下面这个切面:
如果有多个通知想要在同一连接点运行会发生什么?Spring AOP 的执行通知的顺序跟AspectJ的一样。... 对于定义在相同切面的通知,根据声明的顺序来确定执行顺序。比如下面这个切面:
@Aspect
public class AspectWithMultipleAdviceDeclarations {
@Pointcut("execution(* foo(..))")
public void fooExecution() {}
@Before("fooExecution()")
public void doBeforeOne() {
// ...
}
@Before("fooExecution()")
public void doBeforeTwo() {
// ...
}
引用
换言之,因为doBeforeOne先定义,它会先于doBeforeTwo执行,
提问者对于答案的评价:
之前我试过了,也确实是先定义先执行,可我在项目中用的时候却有时候不是这样,可能是其他因素干扰把
已解决问题数: 959
待解决问题数: 418
已关闭问题数: 1635
待解决问题数: 418
已关闭问题数: 1635




