Spring的五大通知类型分别是
后置通知 前置通知 环绕通知 异常通知 最终通知
五种通知执行的顺序 :
在目标方法没有抛出异常的情况下
前置通知
环绕通知的调用目标方法之前的代码//取决于配置顺序
目标方法
环绕通知的调用目标方法之后的代码
*后置通知
*最终通知//取决于配置顺序
在目标方法抛出异常的情况下:
前置通知
环绕通知的调用目标方法之前的代码//取决于配置顺序
目标方法 抛出异常
异常通知
最终通知//取决于配置顺序
如果存在多个切面:
多切面执行时,采用了责任链设计模式。
切面的配置顺序决定了切面的执行顺序,多个切面执行的过程,类似于方法调用的过程,在环绕通知的proceed()执行时,去执行下一个切面或如果没有下一个切面执行目标方法,从而达成了如下的执行过程:
如果目标方法抛出异常:
五种通知的常见使用场景
前置通知
记录日志(方法将被调用)
环绕通知
控制事务 权限控制
后置通知
记录日志(方法已经成功调用)
异常通知
异常处理 控制事务
最终通知
记录日志(方法已经调用,但不一定成功)