Spring AOP 不同版本各个通知执行顺序不一样,坑!

1,129 阅读1分钟

1、Spring 4Spring 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 5Spring 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 4Spring Boot 1.x环绕通知执行完了后,然后再执行后置通知,最后执行的是返回后通知或者方法异常通知

Spring 5Spring Boot 2.x环绕通知就真的如其名一样环绕着所有通知,并且最后执行的变成了后置通知了,返回后通知或者方法异常通知后置通知之前执行了。