aop环绕通知执行流程
时间: 2023-11-03 15:57:03 浏览: 67
AOP(面向切面编程)中的环绕通知是最强大的通知类型之一,它可以控制目标方法是否执行。环绕通知在目标方法执行之前和执行之后都会执行,并且通过调用ProceedingJoinPoint的proceed方法来决定是继续处理join point还是中断执行。
具体的执行流程如下:
1. 当目标方法被调用时,环绕通知开始执行。
2. 环绕通知可以选择在目标方法执行之前执行一些特定的操作,比如记录日志或者执行一些前置逻辑。
3. 如果环绕通知调用ProceedingJoinPoint的proceed方法,那么目标方法会被执行。环绕通知可以在目标方法执行之前和之后添加自己的逻辑。
4. 如果环绕通知不调用ProceedingJoinPoint的proceed方法,那么目标方法将被终止执行,且环绕通知后面的通知将不会被调用。
5. 当目标方法执行完毕后,环绕通知可以执行一些特定的操作,比如记录日志或者执行一些后置逻辑。
所以,环绕通知的执行流程可以总结为:开启环绕通知 -> 执行前置逻辑 -> 执行目标方法 -> 执行后置逻辑 -> 结束环绕通知。
相关问题
spring aop 详解
Spring AOP(Aspect-Oriented Programming)是 Spring 框架中的一个重要模块,它提供了一种面向切面编程的方式,可以方便地实现诸如事务管理、日志记录、权限控制等功能。
在 Spring AOP 中,切面(Aspect)是一个模块化的、可重用的代码块,它可以被应用到多个方法或类中,并在运行时动态地横向切入到目标对象的方法执行流程中。具体来说,切面可以定义一些切点(Pointcut)来匹配目标对象的方法,然后在切点上定义一些通知(Advice)来描述切面要执行的逻辑,通知可以在目标方法执行之前、之后或抛出异常时被触发。
Spring AOP 支持以下几种通知类型:
- 前置通知(Before advice):在目标方法执行之前执行。
- 后置通知(After returning advice):在目标方法返回结果或抛出异常退出时执行。
- 环绕通知(Around advice):在目标方法执行前后都可以执行,可以控制目标方法的执行流程。
- 异常通知(After throwing advice):在目标方法抛出异常时执行。
- 最终通知(After advice):在目标方法执行完成后执行,不管是正常返回还是抛出异常都会执行。
Spring AOP 支持基于 XML 配置和基于注解配置两种方式,具体的配置方法可以参考 Spring 官方文档。
总之,Spring AOP 是 Spring 框架中一个非常强大且常用的模块,可以让我们方便地实现一些常见的横切关注点,提高代码的可维护性和可复用性。
around aop返回值
在AOP(面向切面编程)中,around(环绕)通知是一种类型的通知,可以在被切入的方法执行前后进行拦截和干预。around通知可以控制目标方法的执行流程,并且还能修改返回值。
在around通知执行过程中,我们可以通过拦截目标方法执行前的位置,来获取目标方法的返回值。如果我们想要修改目标方法的返回值,可以通过在around通知中手动设置一个新的返回值,这个新的返回值会替代目标方法原本的返回值。
around通知的返回值类型一般与目标方法的返回值类型一致,或者是它的子类型,以确保返回值的类型安全性。返回值的作用取决于具体的业务场景和需求,例如,我们可以根据某些条件动态确定返回值,或者通过额外的处理逻辑为目标方法返回一个特定的值。
然而要注意,在around通知中修改返回值可能会对程序的正常执行造成一些影响。如果我们不小心修改了目标方法的返回值类型,可能会导致类型不匹配的错误。另外,如果我们没有正确处理异常情况,可能会导致无法预料的运行时异常。因此,在修改返回值时要谨慎操作,保证对目标方法返回值的处理不会引发其他问题。
综上所述,around通知可以在目标方法执行前后拦截和干预,通过修改返回值,可以对目标方法的执行结果进行定制化处理。但是要注意,修改返回值时需要保证类型的匹配和异常的正确处理,以确保程序的正常执行。