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

Java外功精要——Spring AOP

Java外功精要——Spring AOP

Spring AOP(Aspect-Oriented Programming,面向切面编程)是Spring框架的核心特性之一,它能够帮助开发者将横切关注点(如日志、事务、安全等)与业务逻辑分离,提高代码的模块化程度和可维护性。

AOP核心概念
  1. 切面(Aspect): 横切关注点的模块化,如日志切面、事务切面
  2. 连接点(Join Point): 程序执行过程中的某个特定点,如方法调用、字段访问
  3. 通知(Advice): 切面在特定连接点执行的动作,分为前置、后置、环绕、异常、最终通知
  4. 切入点(Pointcut): 匹配连接点的断言,决定哪些连接点会被通知
  5. 引入(Introduction): 向现有类添加新方法或字段
  6. 目标对象(Target Object): 被一个或多个切面通知的对象
  7. AOP代理(AOP Proxy): Spring创建的代理对象,用于实现切面契约
  8. 织入(Weaving): 将切面应用到目标对象并创建代理对象的过程
Spring AOP通知类型
  • @Before: 目标方法执行前执行
  • @AfterReturning: 目标方法正常返回后执行
  • @AfterThrowing: 目标方法抛出异常后执行
  • @After: 目标方法执行后无论结果如何都执行(类似于finally)
  • @Around: 围绕目标方法执行,可控制方法执行时机
实现示例

下面是一个使用Spring AOP实现日志记录的示例:

切入点表达式详解

Spring AOP使用AspectJ的切入点表达式语言,基本格式:

代码语言:javascript

代码运行次数:0

运行

AI代码解释

execution(修饰符? 返回值 包名.类名.?方法名(参数) 异常?)

常用通配符:

  • ​*​​: 匹配任意字符,但只能匹配一个元素
  • ​..​​: 匹配任意字符,可以匹配多个元素,在类路径中表示当前包及其子包,在方法参数中表示任意参数
  • ​+​​: 匹配指定类及其子类

示例:

  • ​execution(* com.example.service.*.*(..))​​: 匹配service包下所有类的所有方法
  • ​execution(public * *(..))​​: 匹配所有公共方法
  • ​execution(* com.example.service.UserService+.*(..))​​: 匹配UserService及其子类的所有方法
Spring AOP的实现原理

Spring AOP默认使用动态代理实现:

  1. 当目标对象实现了接口时,使用JDK动态代理
  2. 当目标对象没有实现接口时,使用CGLIB代理
http://www.dtcms.com/a/561216.html

相关文章:

  • 线程从共享队列取任务的底层机制
  • 一站式网站建设报价怎样做商城网站
  • 宜春公司网站建设网页改进方案
  • 「经典数字题」集合 | C/C++
  • centos7实测
  • 【3DV 进阶-5】3D生成中 Inductive Bias (归纳偏置)的技术路线图
  • HOT100题打卡第26天——动态规划
  • 第五章 二项式系数
  • 制作网站语言网络营销方法有什么
  • 合肥网站建站推广从零开始做电影网站
  • 电商Web 渗透测试小小清单
  • 做信息流推广需要建立网站么最基本的网站设计
  • 基于双向时序卷积网络与门控循环单元(BiTCN-GRU)混合模型的时间序列预测MATLAB代码
  • DevOps(devops/k8s/docker/Linux)学习笔记-2
  • 三点水网站建设wordpress wp-polls
  • 用数据照亮成长之路:PandaCoder Git 统计工具窗口
  • FPGA的LVDS接口电压
  • 【每天一个AI小知识】:什么是Embedding?
  • 南昌网站排名优化免费提供空间的网站
  • 三种服务生命周期
  • Mybatis的添加和修改功能
  • Linux 安全文件传输完全指南:sftp 与 scp 的深度解析引言
  • Mysql基础3
  • 上海cms网站建设珠海网站建设 科速
  • 有没有可以做游戏的网站电商网课教材
  • 【自然语言处理】生成式语言模型GPT复现详细技术方案
  • Qt 打开文件列表选择文件,实现拖拽方式打开文件,拖拽加载
  • 网站搭建徐州百度网络搭建专做婚礼logo的网站
  • macOS 上获取调试版
  • 奉加微PHY6230软件三:自定义MAC和ll_set_ble_mac_addr不能屏蔽