spring aop五个通知的执行顺序
时间: 2023-06-17 13:03:51 浏览: 187
Spring AOP 有五种通知类型,分别是前置通知(Before)、后置通知(After)、返回通知(AfterReturning)、异常通知(AfterThrowing)和环绕通知(Around)。它们的执行顺序如下:
1. 环绕通知(Around):在目标方法执行前后都会执行,且可以控制目标方法的执行。如果有多个环绕通知,按照配置文件中的顺序依次执行。
2. 前置通知(Before):在目标方法执行前执行,如果有多个前置通知,按照配置文件中的顺序依次执行。
3. 目标方法执行(JoinPoint):执行目标方法。
4. 返回通知(AfterReturning):在目标方法正常返回时执行,如果有多个返回通知,按照配置文件中的顺序依次执行。
5. 异常通知(AfterThrowing):在目标方法抛出异常时执行,如果有多个异常通知,按照配置文件中的顺序依次执行。
注意:前置通知和后置通知是不会影响目标方法的执行结果的,返回通知和异常通知可以获取目标方法的返回值或异常信息。而环绕通知则可以控制目标方法的执行,可以替代其他四种通知的功能。
相关问题
简述Spring AOP的通知执行顺序?
在Spring AOP中,通知的执行顺序取决于其类型:
1. **前置通知(Before advice)**:这些通知会在目标方法执行之前被调用。如果多个前置通知关联到相同的切入点,它们会按照配置的顺序执行。
2. **环绕通知(Around advice)**:这是最复杂的通知类型,它会在目标方法执行前后包裹起来,并允许修改调用行为。环绕通知先执行,然后调用目标方法,最后执行剩余的后置通知。
3. **后置通知(After advice)**:这些通知在目标方法正常执行完毕后执行,无论方法是否成功完成。若方法抛出异常,则会根据异常通知的类型(如异常后置通知或最终通知)执行相应的操作。
4. **返回值通知(Return advice)**:在方法返回结果后执行,主要用于获取并修改返回值。
5. **异常通知(Throwing advice)**:当目标方法抛出异常时,异常通知会被触发,可以捕获并处理异常。
Spring AOP默认的执行顺序是:前置通知 -> 回绕通知 -> 方法执行 -> 异常通知 -> 后置通知 -> 返回值通知。如果有多条通知链路,它们会并行执行,除非有明确的依赖关系(例如,一个通知依赖另一个通知的结果)。
spring aop 事物执行顺序
在Spring AOP中,事务的执行顺序可以通过以下步骤来理解:
1. 首先,Spring会检查是否存在与事务相关的注解(如`@Transactional`),如果存在,则会启动事务管理器。
2. 接下来,Spring会在方法执行之前创建一个事务,并将其绑定到当前线程上。
3. 在方法执行之前,Spring会检查是否存在与事务相关的通知(如`@Before`),并在方法执行之前执行这些通知。
4. 然后,方法会被执行,包括其中的业务逻辑。
5. 如果方法执行成功,Spring会提交事务,并将其从当前线程上解绑。
6. 如果方法执行过程中发生异常,Spring会回滚事务,并将其从当前线程上解绑。
7. 最后,Spring会检查是否存在与事务相关的通知(如`@After`或`@AfterReturning`),并在方法执行之后执行这些通知。
总结起来,Spring AOP中事务的执行顺序为:事务创建 -> 前置通知 -> 方法执行 -> 后置通知/返回通知 -> 提交事务/回滚事务。
阅读全文
相关推荐
















