Spring AOP

1. Spring AOP概念

AOP: 面向切面编程 也叫(面向特定方法编程)

简单来说: AOP是一种思想,是对某一类事情的集中处理

某一类事情指的是: 用户登录校验 结果统一返回 异常统一处理 .....

比如"登录校验",就是一类特定问题,登录校验拦截器,就是对"登录校验"这类问题的统一处理,所以,拦截器也是AOP的一种应用 .AOP是一种思想 ,拦截器是AOP思想的一种实现,Spring框架实现了这种思想,提供了拦截器技术的相关接口.

2. Spring AOP实现

2.1 添加AOP框架依赖

2.2 一个切面.切点(一类特定问题)

2.3 优点

  • 代码无侵入: 不修改源代码,就可以对原始的业务方法进行了功能增强或者功能改变.
  • 减少了重复代码
  • 提高开发效率
  • 维护方便

3. Spring AOP 详解

3.1 Spring AOP 核心概念

3.1.1 切点 (Pointcut)

作用是提供一组规则,告诉程序对哪些方法来进行加强.

上图就是切点表达式

3.1.2 连接点 (Join Point)

满足切点表达式规则的方法,就是连接点,也就是可以被AOP控制的方法

以图书管理程序为例,所有 org.example.demo.controller 路径下的方法,都是连接点

3.1.3 通知 (Advice)

通知就是具体要做的工作 ,指哪些重复的逻辑, 也就是共性功能(最终体现为一个方法)

3.1.4 切面 (Aspect)

切面 (Aspect)=切点 (Pointcut) + 通知 (Advice)

程序可以这样表达

3.2 通知类型

3.2.1 @Around

环绕通知,此注解标注的通知方法在目标方法前后都被执行

3.2.2 @Before

前置通知,此注解标注的通知方法在目标方法前被执行

3.2.3 @After

后置通知,此注解标注的通知方法 在目标方法后被执行,无论是否有异常都会被执行

3.2.4 @AfterReturning

返回后通知,此注解标注的通知方法在目标方法在目标方法后被执行,有异常不会被执行

3.2.5 @AfterThrowing

异常后通知,此注解标注的通知方法发生异常后执行

3.3 @PointCut

Spring提供了**@PointCut** 注解,把公共的切点表达式提取出来,需要用到时引⽤该切⼊点表达式即可.

当切点定义使⽤private修饰时,仅能在当前切面类中使用,当其他切面类也要使用当前切点定义时 ,就需要把 private 改为 public.引用方式为:全限定类名.方法名()

3.4 切点表达式

  • * :匹配任意字符,只匹配⼀个元素(包,类,或⽅法,⽅法参数)
  • ..:匹配任意字符,可以匹配多个元素 ,在表示类时,必须和 * 联合使⽤。
  • + :表示按照类型匹配指定类的所有类,必须跟在类名后⾯,如 com.cad.Car+ ,表示继承该类的所有子类包括本身
相关推荐
AMoon丶4 分钟前
C++模版-函数模版,类模版基础
java·linux·c语言·开发语言·jvm·c++·算法
二十雨辰19 分钟前
[Java]RuoYi框架原理分析
java
东离与糖宝24 分钟前
Java 玩转 AI 智能体性能优化:OpenClaw 高并发调用与 Token 成本控制实战
java·人工智能
y = xⁿ32 分钟前
【从零开始学习Redis|第七篇】Redis 进阶原理篇:消息队列、分布式锁、缓存击穿与事务实现
java·redis·学习·缓存
beata1 小时前
Spring Boot基础-2:Spring Boot 3.x 起步依赖(Starter)深度拆解:为什么引入一个依赖就够了?
spring boot·后端
享棣1 小时前
Win11 安装 Nacos 2.0.4 完整版文档 文档说明
后端
90后的晨仔1 小时前
windows安装 openclaw 报错
后端
AMoon丶1 小时前
Golang--多种数据结构详解
linux·c语言·开发语言·数据结构·c++·后端·golang
深蓝轨迹1 小时前
SpringBoot YAML配置文件全解析:语法+读取+高级用法
java·spring boot·后端·学习
颜酱1 小时前
最小生成树(MST)核心原理 + Kruskal & Prim 算法
javascript·后端·算法