【SpringAOP】AOP面向切面编程
目录
一、什么是AOP
二、为什么有AOP
三、AOP相关概念
四、SpringAOP代码案例
1、添加SpringAOP依赖
2、定义切面
3、定义切点
4、实现通知
一、什么是AOP
AOP:AOP—Aspect Oriented Programming(面向切面编程),是对OOP(面向对象编程)的补充与完善。AOP就类似是把登录校验这个一个业务逻辑功能抽取出来,然后动态把这个功能切入到需要的接口(或行为)中,从而减少系统对登录权限校验的重复代码,降低模块之间的耦合度。常用到AOP的就是登录权限校验、日志操作、统一异常格式返回、统一数据格式的返回。
二、为什么有AOP
AOP是一种思想,对OOP思想进行补充与完善,其次他与IoC类似具有解耦合的作用,SpringAOP是对AOP思想的实现
三、AOP相关概念
Aspect(切面)Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些 Pointcut 以及相应的 Advice。 Joint point(连接点):表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它 joint point。 Pointcut(切点):表示一组 joint point,这些 joint point 或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的Advice 将要发生的地方。 Advice(通知):Advice 定义了在 Pointcut 里面定义的程序点具体要做的操作,它通过 before、after 和 around 来区别是在每个 joint point 之前、之后还是代替执行的代码。
四、SpringAOP代码案例
1、添加SpringAOP依赖
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
<version>2.7.9</version>
</dependency>
2、定义切面
通过Aspect注解定义切面
3、定义切点
通过pointcut注解配置拦截规则即要在哪里插入通知
* com.example.demo.*.*(..)
* 返回类型,可以是string、void等 *表示任意类型
com.example.demo.* 要拦截的路径*代表着包底下的全部类
*(..) 方法名(参数列表) *表示任意方法 ..表示任意参数
4、实现通知
通过注解来实现是哪一类通知
注解 | 说明 |
@After | 在拦截的目标方法执行后执行该通知 |
@Before | 在拦截的目标方法执行前执行该通知 |
@Around | 在拦截的目标方法执行前后执行该通知 |
@AfterReturning | 在拦截的目标方法返回返回值后执行该通知 |
@AfterThrowing | 在拦截的目标方法出现异常后执行该通知 |