说一下Spring AOP 通知注解的执行顺序?

Spring AOP 提供了五种类型的通知注解,它们的执行顺序如下:

  1. @Before:前置通知,在切点方法执行前执行。用于在方法执行前进行一些准备工作,例如打开数据库连接、启动事务等。

  2. @Around:环绕通知,在切点方法执行前后执行。它可以决定切点方法在何时开始执行,何时结束,甚至可以完全阻止切点方法的执行。环绕通知需要明确调用 ProceedingJoinPoint.proceed() 方法来触发切点方法的执行。

  3. @After:后置通知,在切点方法执行后执行,无论方法执行是否成功。用于进行一些清理工作,例如关闭数据库连接、提交或回滚事务等。

  4. @AfterReturning:返回通知,在切点方法执行成功后执行。可以访问到方法的返回值。

  5. @AfterThrowing:异常通知,在切点方法抛出异常后执行。可以访问到抛出的异常。

注意,这里的执行顺序只是默认的执行顺序,实际的执行顺序可能会受到切点方法的执行情况和具体配置的影响。例如,如果切点方法抛出了异常,那么 @AfterReturning 就不会执行,而 @AfterThrowing 就会执行。

发表评论

后才能评论