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

SSM--AOP 日志

AOP(Aspect Oriented Programming 面向切面编程)


日志:

​ 1、硬编码:不推荐 耦合:(通用逻辑和 专用逻辑)希望不要耦合

​ 2、静态代理: (编码时介入)

​ 定义:创建一个代理对象,包装这个组件。以后业务的执行,从代理开始,不用直接调用组件。

​ 特点:定义期间就指定好了互相代理的关系

​ 优点:同一种类型的所有对象都能代理

​ 缺点:范围太小了 只能负责部分接口代理功能

​ 3、动态代理: (运行期间才决定好代理关系)(拦截器思想:拦截所有)
​ 定义:目标对象在执行期间会被动态拦截,插入指定逻辑

​ 优点:可以代理世间万物

​ 缺点:比较难写

​ 动态代理是 Java 原生支持的

CleanShot 2025-04-16 at 16.33.39CleanShot 2025-04-16 at 16.36.45

动态代理加日志

CleanShot 2025-04-16 at 16.43.37

动态代理:JDK 动态代理:强制要求,目标对象必须有接口,代理的也只是接口规定的方法

CleanShot 2025-04-16 at 16.54.52

AOP实现步骤

1、导入 AOP 依赖

2、编写切面 Aspec

3、编写通知方法

4、指定切入点表达式

5、测试 AOP 动态织入

CleanShot 2025-04-16 at 17.09.27

@Around:环绕通知,可以控制目标方法是否执行,修改目标方法参数,执行结果等

CleanShot 2025-04-16 at 17.12.36

增强器链:切面中的所有通知方法其实就是增强器,他们被组织成一个链路放在集合中,目标方法真正执行前后会去增强器链中执行需要执行的方法

AOP 底层原理:

1、Spring 会为每个被切面切入的组件创建代理对象

2、代理对象中保存了切面类里面所有通知方法构成的增强器链

3、目标方法执行时,会先去执行增强器链中拿到需要提前执行的方法

通知方法的执行顺序:

​ 1、正常链路:前置通知–>目标方法–>返回通知–>后置通知

​ 2、异常链路:前置通知–>目标方法–>异常通知–>后置通知

JoinPoint :包装了 当前目标方法的所有信息

多切面执行顺序

CleanShot 2025-04-17 at 16.55.16

http://www.xdnf.cn/news/613.html

相关文章:

  • maven的安装与配置、IDEA集成maven
  • Redis 事件循环(Event Loop)
  • 主机运行状态的监控命令(top命令)
  • python——字典
  • Opencv图像处理:模板匹配对象
  • Python小游戏:俄罗斯方块简易版三
  • skywalking agent 关联docker镜像
  • 关于AI:记忆、身份和锁死
  • 【MySQL】MySQL的基础语法及其语句的介绍
  • Qt6离线安装过程
  • 在win上安装Ubuntu安装Anaconda(linx环境)
  • React 自定义Hook之usePrevious
  • CFS 的调度类型:普通调度 vs 组调度
  • 【中级软件设计师】语言处理程序(汇编程序、解释程序、编译程序)附软考真题
  • go语言优雅关机和优雅重启笔记
  • WEMOS LOLIN32
  • 第一部分笔试Day_01到Day24_每天两道OJ
  • 图解MCP:Model Context Protocol
  • 从零开始用Pytorch实现LLaMA 4的混合专家(MoE)模型
  • 【Java】接口interface学习
  • 国际数据加密算法(IDEA)详解
  • CentOS 10 /root 目录重新挂载到新分区槽
  • 【数据结构入门训练DAY-18】信息学奥赛一本通T1331-后缀表达式的值
  • URLDNS链构造
  • Android Studio 中 Drawable 详细全解
  • Android Drawable 目录下的 XML 图形文件详解
  • 在 Linux 上部署 .NET Core 应用并配置为开机自动启动
  • [操作系统] 信号
  • GO语言入门:常用数学函数2
  • rollup使用讲解