Spring切面编程中, @Around 和 @Pointcut有什么区别

@Around 和 @Pointcut 在Spring AOP中都是重大的组成部分,但它们的功能和用途有所不同:

@Around

  • @Around 是一种通知类型(Advice),它代表了一种特殊的切面方法,这种方法能够在目标方法执行前后进行拦截,即所谓的“环绕通知”。
  • 当一个方法被@Around注解的方法拦截时,它既可以执行环绕目标方法的前置逻辑,也可以在目标方法执行完毕后执行后置逻辑,并且还可以选择是否调用目标方法(通过调用ProceedingJoinPoint的proceed()方法)以及如何处理目标方法的返回结果。
  • @Around 方法一般接受一个ProceedingJoinPoint作为参数,通过这个参数可以访问到被拦截的方法信息以及控制目标方法的执行流程。

@Pointcut

  • @Pointcut 是用于定义一个切点表达式的注解,它本身并不执行任何增强逻辑,而是用来声明一个切入点,这个切入点可以被多个不同的通知复用。
  • 切点表达式描述了哪些连接点(如方法调用)将会受到切面的影响,即哪些方法会被包含在AOP的拦截范围内。
  • 定义了一个@Pointcut后,可以在其他通知(如@Before, @After, @AfterReturning, @AfterThrowing, 或者 @Around)中引用这个切点,这样就不用在每个通知中重复编写一样的切点表达式。

总结:

  • @Around 注解的方法提供了在目标方法执行前后插入自定义逻辑的能力。
  • @Pointcut 注解用于定义一个或多个连接点的集合表达式,这些集合可以被不同类型的注解通知共享和引用,简化切面的定义。
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容