亲宝软件园·资讯

展开

Spring Aop执行顺序 深入理解Spring Aop的执行顺序

编程の小白 人气:0
想了解深入理解Spring Aop的执行顺序的相关内容吗,编程の小白在本文为您仔细讲解Spring Aop执行顺序的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点: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


加载全部内容

相关教程
猜你喜欢
用户评论