news 2026/5/24 21:23:43

【JavaEE27-后端部分】Spring AOP 核心概念详解——把抽象变具象,让理论不再“飘”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【JavaEE27-后端部分】Spring AOP 核心概念详解——把抽象变具象,让理论不再“飘”

老铁们,上篇博客我们体验了 Spring AOP 的威力:轻轻松松就给所有 Controller 方法加上了耗时统计。但是,你是不是对 切点、连接点、通知、切面 这些概念还一头雾水?感觉它们像一堆飘在空中的术语,抓不住、摸不着?
别急,今天我们就把这些概念从天上拉到地上,用最生活的例子、最形象的画图,把它们掰开揉碎讲清楚。


一、Spring AOP的 概念

1. 四个概念

(1). 切点
(2). 切面
(3). 通知
(4). 连接点

咱们用下述的代码来举例子:



2. 举例说明概念

举个通俗的例子,比如一个老师要通知1班的学生在8:45上课,那假如我们有100个学生的话,那这个老师就得挨个挨个的发通知。这是比较麻烦的,于是呢,我们就建一个班级群,然后在班级里统一通知。
此时这里的连接点就是:100个学生,比如张三、李四、王五,他们自己就是属于一个连接点。
我们的切点就是这个1班的学生(切点是一个表达式,所以我们叫1班的学生)。
我们的通知8:45上课
然后整个这件事情我们就称之为切面


那如果你还对此概念有一些模糊,那么不用着急,我们再举一个例子,老铁们继续往下读。


二、举例说明四个概念

1. 先从一个故事开始:图书馆的“统一还书提醒”

1.1 没有 AOP 的日子

假设你经营着一家图书馆,里面有几千本图书。每天都有很多读者来借书、还书。你发现一个问题:很多读者总是忘记还书日期,导致逾期。你想在每个读者还书的时候,顺便提醒他“下次记得按时还书哦”

最简单的办法:在每一个还书的方法里,加上一句提醒。

publicvoidreturnBook(Bookbook){// 还书的核心逻辑updateBookStatus(book);// 提醒System.out.println("亲,记得按时还书哦");}

但是,图书馆里有几十种还书方式:前台还书、自助机还书、APP还书……每个地方都要加。如果以后提醒文案改了,几十个地方都要改,累不累?

1.2 引入 AOP 后

AOP 的做法是:不修改任何还书代码,而是“在还书的时候自动附赠一句提醒”。就像你在超市买东西,收银员扫描商品后,小票上自动打印“谢谢惠顾”——收银员没有刻意去说,系统自动加的。

在 AOP 里:

  • 连接点:所有可以加提醒的地方(前台还书、自助机还书、APP还书)——也就是所有可能被增强的方法。
  • 切点:你只关心“还书”这个方法,不关心其他方法(比如借书、查书)。切点就是一条规则,告诉程序“只对还书方法进行增强”。
  • 通知:具体要做的提醒动作——“亲,记得按时还书哦”。
  • 切面= 切点 + 通知 = “在还书时加上提醒”。

2. 核心概念逐一说(配图)

2.1 连接点(Join Point)——所有可能被切的地方

概念:连接点是程序执行过程中的某个“点”,比如方法调用、异常抛出、字段赋值等。在 Spring AOP 中,连接点通常指一个方法的执行

生活例子:一座大楼里有无数个房间(方法),每个房间的门(方法入口)都是一个“连接点”。理论上,你可以在任何一扇门上贴广告。

画图理解

一句话:连接点就是所有可以被 AOP 切入的地方。


2.2 切点(Pointcut)——我要切哪些地方

概念:切点是一组规则,用来筛选出你真正想增强的连接点。它就像一个“过滤器”。

生活例子:你不想在每个房间门上贴广告,只想在“校长办公室”和“教导处”的门上贴。你定的规则就是“只贴这两扇门”。这个规则就是切点

画图理解

代码中:切点表达式execution(* com.zhongge.controller.*.*(..))就是规则。

一句话:切点就是“在众多连接点中,挑出我感兴趣的那些”。


2.3 通知(Advice)——我要做什么

概念:通知是具体的增强代码,也就是“你要做的事情”。它决定了在连接点的什么时机执行(前、后、环绕、异常等)。

生活例子:你选定了“校长办公室”这扇门(切点),然后你决定在门上贴一张“欢迎光临”的贴纸(通知)。贴纸就是通知

通知的类型(时机)

  • 前置通知(@Before):进门之前贴。比如在方法执行前打印日志。
  • 后置通知(@After):出门之后贴。无论方法是否成功,都执行。
  • 返回后通知(@AfterReturning):正常出门后贴。只有方法正常返回才执行。
  • 异常后通知(@AfterThrowing):摔了一跤出门后贴。只有方法抛异常才执行。
  • 环绕通知(@Around):把整个门包起来,进门出门都能贴。最强大,可以控制方法是否执行。

画图理解

一句话:通知就是“你要做的事 + 做事的时机”。


2.4 切面(Aspect)——切点 + 通知

概念:切面 = 切点 + 通知。它把“在哪里做”和“做什么”绑定在一起。

生活例子:你制定了一条规则:“在校长办公室的门上(切点),贴一张‘欢迎光临’的贴纸(通知)”。这条完整的规则就是切面

画图理解

一句话:切面就是“在哪些方法上,做什么事”。


3. 把这些概念串起来:一个完整的例子

假设我们要统计BookController中所有方法的执行耗时。

  • 连接点addBook()queryBookById()updateBook()deleteBook()batchDelete()等所有方法。
  • 切点execution(* com.zhongge.controller.BookController.*(..))——只选择 BookController 中的方法。
  • 通知:记录开始时间、结束时间,计算差值并打印。
  • 切面:把切点和通知组合成一个@Aspect类。

画图表示


4. 一张图总结所有概念


老铁们,本期我们先简单对SpringAOP的概念进行具体化的理解~
后续内容干货满满,记得点赞👍+关注💖+收藏⭐,不迷路!
下一期,我们将对SpringAOP通知类型的详细用法多个切面的执行顺序,敬请期待~🚀

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/23 1:39:30

实战指南:基于快马AI构建企业级Playwright Chromium商品数据采集系统

最近在做一个电商数据采集的项目,尝试用Playwright和Chromium实现了一套稳定的采集方案,这里分享一下实战经验。这个方案特别适合需要长期运行的企业级数据采集场景,从页面加载到数据存储都做了稳定性优化。 环境准备与基础配置 首先需要安…

作者头像 李华
网站建设 2026/5/23 1:39:32

RyTuneX:让Windows系统焕然一新的智能优化工具

RyTuneX:让Windows系统焕然一新的智能优化工具 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目地址: htt…

作者头像 李华
网站建设 2026/5/23 1:39:30

BetterGI:5大核心功能如何让您的原神游戏体验提升300%?

BetterGI:5大核心功能如何让您的原神游戏体验提升300%? 【免费下载链接】better-genshin-impact 📦BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 | 自动采集/挖矿/锄地 | 一条龙 | …

作者头像 李华
网站建设 2026/5/23 1:39:32

[Python3高阶编程] - 深入理解 lambda

一、Lambda 出现的原因1. 函数式编程思想的引入Python 虽然是多范式语言,但早期就受到了函数式编程的影响。Lambda 表达式是函数式编程的核心概念之一,它允许:匿名函数:不需要显式命名的函数。(本质还是函数&#xff0…

作者头像 李华
网站建设 2026/5/23 1:39:34

解决Mac Mouse Fix安装难题:三选一决策框架与实施指南

解决Mac Mouse Fix安装难题:三选一决策框架与实施指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix Mac Mouse Fix作为一款能够显…

作者头像 李华