理解SpingAOP

本文详细介绍了Spring AOP的基本概念,包括横切关注点、AOP术语如通知、连接点、切点、切面、引入和织入。通过SpringBoot集成Spring AOP的实例,阐述了如何定义切点、创建注解、定义切面,并讨论了不同类型的通知名及其实现。最后,通过测试分析了通知在正常和异常情况下的执行时机。
摘要由CSDN通过智能技术生成

什么是AOP?


​ AOP,即我们平时经常提到的面向切面编程。首先我们要理解一个叫**横切关注点(cross-cutting concern)**的概念,它其实是描述我们应用中的功能,假如有一个功能,它在应用程序中很多个地方都用了,那么我们把这样的功能称之为横切关注点

​ 日常开发中,我们都会将不同的业务场景抽象出对应的模块进行开发,而不同的模块,除了那些针对特定领域的核心功能外,还有一些相同的辅助功能,比如日志管理、安全管理、事务管理等等。横切关注点这个概念其实就点明了:类似这样的功能就是我们面向切面编程需要关注的地方。这也是面向切面编程的意义所在:它帮助我们实现横切关注点和他们所影响的对象之间的解耦。

​ 面向切面编程的实质,就是讲横切关注点模块化成称为切面的特殊的类。

AOP术语


以下讨论都基于SpringAOP

通知(Advice)

切面的工作被称为通知。也就是定义了切面的要做什么,以及何时做的问题。下面是Spring切面有5种类型的通知,以及相对应的在SpringBoot中的五个注解

  • 前置通知(Before):方法调用之前,对应@Before
  • 后置通知(After):方法调用之后(不关心方法输出是什么)对应@After
  • 返回通知(After-returning):目标方法成功执行之后,对应@AfterReturning
  • 异常通知(After-throwing):目标方法抛出异常之后,对应@AfterThrowing
  • 环绕通知(Around):方法调用之前和之后,对应@Around
  • 后置通知和返回通知的区别

    后置通知应用时机在返回通知之后,任何情况下都会应用,而返回通知只有方法正常执行

    正常返回后执行

  • 环绕通知与其它通知的区别

    不同于其它的通知,环绕通知有目标方法的执行权,能够控制目标方法是否执行。而其它的通知更多是对目标方法的一个增强,无法影响目标方法的执行

以上两点,我们下面会通过一个例子更好的体会其中的差异。

连接点(Join point)

程序中那些我们想要应用通知的地方,就是连接点。这个点可以是我们调用方法时、抛出异常时或甚至是修改某一个字段的时候。切面代码(通知)可以通过这些点插入到应用的正常流程中,是原本的功能增添新的行为。

切点(Pointcut)

我们的应用程序可能会有很多个连接点需要我们应用通知,所以我们有必要把连接点的分类汇总,抽象出相同的特点,好让正确的切面切入到正确的地方去,各司其职,而不是切入所有的连接点。切点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值