小结:各种通知的运行顺序
这篇博客主要是来总结一下基于注解配置的AOP,通知的执行顺序会有一些小问题。
AOP是通过动态代理实现的,它的大致过程如下:
advicer.before();
try{
target.foo();
advicer.afterReturning();
}catch(Exception e){
advicer.afterThrowing();
throw new RuntimeException(e);
}finally{
advicer.after();
}
前置通知和最终通知一定会执行,后置通知和异常通知只有一个会执行
所以,运行的顺序分为两种情况:
正常结束
- 前置通知
- 切入点方法
- 后置通知
- 最终通知
异常结束
- 前置通知
- 切入点方法
- 异常通知
- 最终通知
验证XML配置的AOP的运行顺序
/**
* 通知类
*/
@Component
public class Advicer {
public void