1、Spring 4 或 Spring Boot 1.x
正常执行
正常执行顺序为:
(1)@Around(环绕通知)
(2)@Before(前置通知)
(3)执行方法逻辑
(4)@Around(环绕通知)
(5)@After(后置通知)
(6)@AfterReturning(返回后通知)
异常执行
异常执行顺序为:
(1)@Around(环绕通知)
(2)@Before(前置通知)
(3)执行方法逻辑
(4)@After(后置通知)
(5)@AfterThrowing(方法异常通知)
(6)抛出异常
2、Spring 5 或 Spring Boot 2.x
正常执行
正常执行顺序为:
(1)@Around(环绕通知)
(2)@Before(前置通知)
(3)执行方法逻辑
(4)@AfterReturning(返回后通知)
(5)@After(后置通知)
(6)@Around(环绕通知)
异常执行顺序为:
异常执行
(1)@Around(环绕通知)
(2)@Before(前置通知)
(3)执行方法逻辑
(4)@AfterThrowing(方法异常通知)
(5)@After(后置通知)
(6)抛出异常
总结
Spring 4 或 Spring Boot 1.x :环绕通知执行完了后,然后再执行后置通知,最后执行的是返回后通知或者方法异常通知。
Spring 5 或 Spring Boot 2.x:环绕通知就真的如其名一样环绕着所有通知,并且最后执行的变成了后置通知了,返回后通知或者方法异常通知在后置通知之前执行了。