java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Spring Aop执行顺序

深入理解Spring Aop的执行顺序

作者:编程の小白

本文将结合实例代码,介绍Spring Aop的执行顺序,非常具有实用价值,需要的朋友可以参考下

首先回忆一下 AOP 的常用注解

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正常顺序 + 异常顺序

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的执行顺序的文章就介绍到这了,更多相关Spring Aop执行顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文