说一下Spring AOP 通知注解的执行顺序?
Spring AOP 提供了五种类型的通知注解,它们的执行顺序如下:
@Before
:前置通知,在切点方法执行前执行。用于在方法执行前进行一些准备工作,例如打开数据库连接、启动事务等。-
@Around
:环绕通知,在切点方法执行前后执行。它可以决定切点方法在何时开始执行,何时结束,甚至可以完全阻止切点方法的执行。环绕通知需要明确调用ProceedingJoinPoint.proceed()
方法来触发切点方法的执行。 -
@After
:后置通知,在切点方法执行后执行,无论方法执行是否成功。用于进行一些清理工作,例如关闭数据库连接、提交或回滚事务等。 -
@AfterReturning
:返回通知,在切点方法执行成功后执行。可以访问到方法的返回值。 -
@AfterThrowing
:异常通知,在切点方法抛出异常后执行。可以访问到抛出的异常。
注意,这里的执行顺序只是默认的执行顺序,实际的执行顺序可能会受到切点方法的执行情况和具体配置的影响。例如,如果切点方法抛出了异常,那么 @AfterReturning
就不会执行,而 @AfterThrowing
就会执行。