Spring Aop的执行顺序
2021-06-11 17:17
1231 查看
Spring Aop的执行顺序
首先回忆一下
AOP的常用注解
-
@Before:前置通知:目标方法之前执行
-
@After:后置通知:目标方法之后执行
-
@AfterReturning:返回后通知:执行方法结束前执行
-
@AfterThrowing:异常通知:出现异常时执行
-
@Around:环绕通知:环绕目标方法执行
Spring4 中aop正常顺序 + 异常顺序
try{ @Before method.invoke(obj, args); @AfterReturning }catch(){ @AfterThrowing }finally{ @After }
正常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterReturning(正常返回) 异常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterThrowing(方法异常)
另外如果还配置有环绕通知,则环绕通知的前置处理先于@Before执行
环绕通知的后置处理也先于@After、@AfterReturning、@AfterThrowing执行
正常结果:
环绕前置处理 @Before前置通知 invokeMethod() 环绕通知后置处理 @After后置通知 @AfterReturning / @AfterThrowing
异常结果:
环绕前置处理 @Before前置通知 @After后置通知 @AfterReturning / @AfterThrowing
Spring5 中aop正常顺序 + 异常顺序
正常执行:@Before(前置通知) ====>@AfterReturning(正常返回) ====>@After(后置通知) 异常执行:@Before(前置通知) ====>@AfterThrowing(方法异常) ====>@After(后置通知)
加上环绕通知的正常执行结果:
环绕前置处理 @Before前置通知 invokeMethod() @AfterReturning / @AfterThrowing @After后置通知 环绕通知后置处理
加上环绕通知的异常执行结果:
环绕前置处理 @Before前置通知 @AfterReturning / @AfterThrowing @After```## Spring Aop的执行顺序 首先回忆一下 `AOP` 的常用注解 + @Before:前置通知:目标方法之前执行 + @After:后置通知:目标方法之后执行 + @AfterReturning:返回后通知:执行方法结束前执行 + @AfterThrowing:异常通知:出现异常时执行 + @Around:环绕通知:环绕目标方法执行 > Spring4 中aop正常顺序 + 异常顺序 ```java try{ @Before method.invoke(obj, args); @AfterReturning }catch(){ @AfterThrowing }finally{ @After }
正常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterReturning(正常返回) 异常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterThrowing(方法异常)
另外如果还配置有环绕通知,则环绕通知的前置处理先于@Before执行
环绕通知的后置处理也先于@After、@AfterReturning、@AfterThrowing执行
正常结果:
环绕前置处理 @Before前置通知 invokeMethod() 环绕通知后置处理 @After后置通知 @AfterReturning / @AfterThrowing
异常结果:
环绕前置处理 @Before前置通知 @After后置通知 @AfterReturning / @AfterThrowing
< 56c pre>Spring5 中aop正常顺序 + 异常顺序
正常执行:@Before(前置通知) ====>@AfterReturning(正常返回) ====>@After(后置通知) 异常执行:@Before(前置通知) ====>@AfterThrowing(方法异常) ====>@After(后置通知)
加上环绕通知的正常执行结果:
环绕前置处理 @Before前置通知 invokeMethod() @AfterReturning / @AfterThrowing @After后置通知 环绕通知后置处理
加上环绕通知的异常执行结果:
环绕前置处理 @Before前置通知 @AfterReturning / @AfterThrowing @After
相关文章推荐
- spring AOP的复习和5中通知的执行顺序
- spring aop的@Before,@Around,@After,@AfterReturn,@AfterThrowing执行顺序
- Spring AOP执行顺序
- 演示继承的构造函数执行顺序
- SQL SERVER 一个SQL语句的执行顺序
- MySQL中完整select语句及其执行顺序
- SELECT语句逻辑执行顺序
- java类中各属性成员执行顺序
- js的执行顺序
- JAVA中static的执行顺序
- 【转】Oracle Form 触发器执行顺序
- 类加载顺序,JVM角度分析理解,类构造器方法以及实例构造器方法执行顺序
- mysql语句执行顺序
- C#中的构造函数,私有构造函数,静态构造函数以及构造函数的执行顺序
- Form中Trigger的执行顺序
- 优先级PriorityBlockingQueue线程队列执行顺序
- 在js中ajax的执行顺序
- 有return的情况下try catch finally的执行顺序
- 有关类及类之间,类成员代码执行顺序链接
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)