当前位置: 首页 > news >正文

Spring知识梳理(4)

Spring知识梳理(4)

作者:没有四次元口袋的蓝胖
日期:2026-07-16
标签:Java, Spring, AOP, 面向切面编程


一、AOP 是什么

AOP(Aspect-Oriented Programming,面向切面编程)是对 OOP 的补充。

  • OOP:纵向继承,解决类与类之间的复用(封装、继承、多态)
  • AOP:横向抽取,解决跨多个类的公共行为复用(日志、事务、权限、性能监控)
传统 OOP 的问题: UserService OrderService ProductService ↓ ↓ ↓ 日志代码 日志代码 日志代码 ← 重复! 事务代码 事务代码 事务代码 ← 重复! 权限代码 权限代码 权限代码 ← 重复! AOP 的解决方式: UserService OrderService ProductService ↓ ↓ ↓ ┌─────────┐ │ AOP 切面 │ ← 统一抽取,一处维护 └─────────┘

一句话总结:AOP 把散落在各处的公共逻辑抽到一个地方统一管理,不侵入业务代码。


二、核心术语(7 个必须分清)

术语英文含义例子
切面Aspect横切关注点的模块化日志切面、事务切面
连接点JoinPoint程序执行的某个点(方法调用、异常抛出)每个方法都是一个连接点
切入点Pointcut你选择的哪些连接点要被增强execution(* service.*.*(..))
通知(增强)Advice切入后做什么打日志、开事务
目标对象Target被代理的原始对象UserService 实例
代理对象ProxyAOP 生成的增强后的对象包含日志逻辑的 UserService
织入Weaving把切面逻辑应用到目标对象的过程Spring 在运行时通过代理完成

面试口诀:切面 = 切入点 + 通知。切入点决定"在哪里切入",通知决定"切入后做什么"。

连接点 vs 切入点(最容易混淆)

  • 连接点:程序中所有可以被拦截的点(所有方法),是客观存在的
  • 切入点:你实际选中的那些连接点,是主观选择的
所有方法 = 连接点(全集) 你选中的方法 = 切入点(子集)

三、五种通知类型

通知注解执行时机用途
前置通知@Before目标方法执行前参数校验、权限检查
后置通知@AfterReturning目标方法正常返回后日志记录
环绕通知@Around包裹目标方法执行事务管理、性能监控
异常通知@AfterThrowing目标方法抛出异常后异常处理、告警
最终通知@After目标方法执行后(无论是否异常)资源清理(类似 finally)

执行顺序

正常执行流程: @Around 前半 → @Before → 目标方法 → @Around 后半 → @AfterReturning → @After 异常执行流程: @Around 前半 → @Before → 目标方法(抛异常)→ @AfterThrowing → @After

注意@After类似于finally,无论正常返回还是异常都会执行。@AfterReturning只在正常返回时执行。

@Around 为什么最强大?

@Around("pointcut()")publicObjectaround(ProceedingJoinPointpjp)throwsThrowable{// 前置逻辑longstart=System.currentTimeMillis();// 可以决定是否执行目标方法(调不调 proceed())Objectresult=pjp.proceed();// 不调用则目标方法不执行// 后置逻辑longcost=System.currentTimeMillis()-start;System.out.println("耗时: "+cost+"ms");// 甚至可以修改返回值returnresult;}

@Around能做的事:

  • ✅ 控制目标方法是否执行(不调proceed()就行)
  • ✅ 修改入参
  • ✅ 修改返回值
  • ✅ 捕获异常不让它传播

其他四种通知做不到这些。


四、Spring AOP 完整执行流程

客户端调用 proxy.method() ↓ 代理对象拦截方法调用 ↓ 根据 Pointcut 匹配:这个方法需要被增强吗? ├── 是 → 按通知类型执行增强逻辑 │ ├── @Before │ ├── 目标方法 │ ├── @AfterReturning / @AfterThrowing │ └── @After └── 否 → 直接调用目标对象的方法

五、思维导图速览

Spring AOP ├── 核心思想 │ ├── 横向抽取公共逻辑(日志、事务、权限) │ ├── 不修改源代码,运行时织入 │ └── 底层 = 动态代理(下篇详解) │ ├── 7 个核心术语 │ ├── Aspect(切面)= Pointcut + Advice │ ├── JoinPoint(连接点)= 所有可拦截的点 │ ├── Pointcut(切入点)= 你选中的连接点 │ ├── Advice(通知)= 切入后做什么 │ ├── Target / Proxy / Weaving │ └── 关键区分:连接点(全集)vs 切入点(子集) │ ├── 五种通知 │ ├── @Before(前置) │ ├── @AfterReturning(后置) │ ├── @Around(环绕)← 最强大,控制执行流 │ ├── @AfterThrowing(异常) │ └── @After(最终,类似 finally) │ └── 执行顺序 ├── 正常:Around前 → Before → 方法 → Around后 → AfterReturning → After └── 异常:Around前 → Before → 方法抛异常 → AfterThrowing → After

六、写在最后

面试回答模板

“AOP 是面向切面编程,把散落在各处的公共逻辑统一抽取管理。核心概念有 7 个,最重要的是切面 = 切入点 + 通知。切入点决定在哪里切入,通知决定切入后做什么。通知有五种,@Around 最强大,可以控制目标方法是否执行、修改入参和返回值。AOP 底层通过动态代理实现,运行时生成代理对象。”

学习建议

  1. 7 个术语:重点区分"连接点 vs 切入点",面试常考
  2. 五种通知:记住执行顺序,理解 @Around 为什么最强
http://www.jsqmd.com/news/1214146/

相关文章:

  • 从零搭建医疗器械质量管理体系大模型:架构、数据与合规实践
  • IE8linter核心技术解析:PhantomJS与CSS解析的完美结合
  • Codex Dream Skin 使用教程:给 Codex 桌面端安装开源皮肤与自定义主题
  • 2026石家庄黄金首饰回收价参考,全城上门当场结算,6家本地正规回收门店实测盘点 - 企业家观察员
  • 学嵌入式只选北京这7家培训机构 - 教育品牌推荐官
  • 大连西岗区二手欧米茄手表多少钱回收?2026 易奢福到店估价实测 - 奢侈品回收实体店
  • JetBrains IDE试用重置终极指南:简单快速延长30天免费使用期
  • 2026河源防水补漏实测推荐|楼顶/屋面/卫生间/外墙/地下室防水堵漏、免砸砖维修、阳台飘窗漏水修复口碑榜全维度测评(7月河源深度测评) - 吉林同城获客
  • 2026北京朝阳区三里屯奢侈品回收避坑 连锁品牌优选指南 - 全国二奢机构参考
  • 最新量化工具推荐,先把核心问题放回流程阶段
  • 深入解析TI CC35xx SOC_AON寄存器:系统控制与硬件安全隔离实战
  • 字符串学习笔记1
  • 2026深圳水电泥水油漆木工垃圾清运装修公司TOP5精选 - LYL仔仔
  • 3分钟开启你的媒体下载革命:Parabolic如何让视频音频下载变得如此简单
  • 2026荆门筑宅安房屋修缮|全域防水补漏一站式服务,根治雨季渗漏难题 - 筑宅安
  • 2026图片去除背景工具全解:免费在线、手机APP、电脑软件实操对比
  • 探索 進階 ChatBot 結合 DeepSeek
  • 吕梁市黄金贵金属回收推荐:清奢黄金回收等六家优质店铺全城覆盖 - 清奢黄金上门回收
  • 终极指南:3步掌握Wallpaper Engine壁纸资源提取与转换
  • 从血糖曲线到代谢适配:ChatGPT营养餐单生成器深度拆解,附可直接运行的Prompt工程模板
  • 雷达中国官方售后服务中心|官方地址及24小时客服电话权威信息通告(2026年7月更新) - 亨得利钟表维修中心
  • 小白学习C#笔记 day6 - 抽象类与接口练习题
  • 2026年7月本地商家数字人实测:哪些场景能用数字人拍出来?
  • WPS AI数据透视表报错频发?5类高频故障诊断清单+官方未公开修复路径
  • 如何快速批量下载抖音无水印视频:douyin-downloader 完整使用指南
  • 终极指南:如何用VESC Tool快速配置无刷电机控制器
  • 2026 天津名包回收门店实测!卖包不踩坑全指南 - 奢侈品回收机构参考
  • 2026 天津河西区名表回收测评!劳力士真实成交价曝光 - 奢侈品回收实体店
  • 腾讯给出年薪5百万的工程师岗位是FDE:智能体时代,一个年薪百万的新岗位火了:FDE
  • 汇总必看!2026珠海通风防雨百叶窗厂家/锌钢铝合金空调外机罩格栅网怎么选?靠谱推荐锦锋诚香洲斗门金湾横琴工程外墙百叶源头工厂!附安装常见问题答疑 - 奋斗者888