品牌型号:联想ThinkPad X1
系统:Windows 10 家庭版
软件版本:Spring 5.3.7
我们在做项目的时候,经常要对日志做记录,或者是一些权限校验,还有就是事务管理,像这类通用功能,需要穿插到各个业务方法中去,这可能会导致业务代码冗余并且不利于后期的维护。以日志记录来举例:每个接口都要重复写日志代码,如果修改日志格式可能还要去逐个改动,效率很低下,那么我们怎样优雅的来做这件事呢?这时候Spring Aop的出现就很好的解决了这个痛点,Aop是Spring框架的核心组件之一,和ioc相辅相成,能够彻底解决通用功能和业务逻辑的高耦合问题。下面就给大家介绍一下Spring的Aop的作用,Spring Aop通知类型的相关内容。
一、Spring的Aop的作用
说到Spring的Aop,我们可以先来聊聊oop面向对象,oop是一种编程思想,按照很多书上的描述就是说可以把class类比作设计图,而这些类的实例也就是对象可以看作是根据这个图纸生成的汽车,这就是面向对象的思想,总想对一个事物、一个类进行抽取,用对象来组织代码。
而aop是横向的对不同事物的抽象,不同事物里的属性和属性、方法和方法、对象和对象都可以组成一个切面。有了aop面向切面编程,那我们之前的日志逻辑就可以抽取出来,使用前置通知开始记录,后置通知打印返回结果,异常通知打印异常信息,环绕通知统计方法执行耗时。

我们利用Spring aop可以解决重复冗余的问题,降低耦合度,可以做到在不修改原有业务代码的基础上,通过动态代理的方式对方法进行功能增强。同样,我们也可以用来做事务管理,在数据库操作中事务管理是很重要的,能够确保数据库操作的一致性和完整性,在事务切面中,我们可以使用前置通知来开启事务,后置通知提交事务,遇到异常的时候使用异常通知来做回滚,我们可以看下如下代码。

二、Spring Aop通知类型
Spring的aop用起来确实很顺手,在不修改业务代码原有逻辑的基础上,对代码做了增强,而且还提供了5种标准通知类型可以控制不同的执行时机,例如,前置通知,我们可以在目标方法执行之前运行,例如上面做日志记录的时候就用到了。

后置通知可以在目标方法执行完毕运行,不管是否有异常都会执行,这就有点类似于try..catch中的finally了。

返回通知@AfterReturning是在目标方法正常执行完毕并且有结果返回后才运行,如果遇到异常就不执行。

异常通知是当目标方法出现异常的时候才运行的,例如我们在开发的时候可以用来处理异常日志。

最后就是环绕通知,这也是我们在项目中经常用到的,可以包裹目标方法,这个环绕通知就比较适合用来做性能监控了。
以上就是Spring的Aop的作用,Spring Aop通知类型的全部内容了。Spring的Aop是一种横向抽取的思想,可以让我们在不改变业务代码原有逻辑的基础上,优雅地对原代码进行增强,常被用在日志记录、事务管理、性能监控等场景上,Aop中的通知提供了五种通知类型,例如前置、后置通知、返回通知、异常通知,还有我们项目中常用的环绕通知,这些通知类型,分别控制着不同的执行时机。