使用BeanNameAutoProxyCreator并配置多个interceptorNames,
它们包括MethodBeforeAdvice、AfterReturningAdvice、ThrowsAdvice多种,
它们的执行顺序是怎样的?
另外,这里设置的advice与在另一个配置文件中设置的数据库事务控制谁在谁的前面执行?
[b]问题补充:[/b]
To lovewhzlq:
是不是可以这样理解:
1、在执行方法前,在interceptorNames中依次查找实现MethodBeforeAdvice的Advice并执行
2、执行完方法后,在interceptorNames中依次查找实现AfterReturningAdvice的Advice并执行
3、假若以上两个步骤中以及执行方法中跑出异常,则在interceptorNames中依次查找实现ThrowsAdvice的Advice并执行
4、对于数据库事务,如果有关事务的设置在前面,就可以保证interceptorNames中的Advice都受事务控制了,是吗?
可以这样理解吗?
另外,上面第3条,ThrowsAdvice可以捕获其它Advice中抛出的异常吗?
ThrowsAdvice是用来捕获bean的异常,当然不能捕获其它Advice中抛出的异常
配置interceptorNames,是按配置的顺序来执行
advice与在另一个配置文件中设置的数据库事务控制,要看它配置在前面就先执行谁