SSM--AOP 日志

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


日志:

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

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

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

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

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

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

​ 3、动态代理: (运行期间才决定好代理关系)(拦截器思想:拦截所有)

​ 定义:目标对象在执行期间会被动态拦截,插入指定逻辑

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

​ 缺点:比较难写

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

动态代理加日志

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

AOP实现步骤

1、导入 AOP 依赖

2、编写切面 Aspec

3、编写通知方法

4、指定切入点表达式

5、测试 AOP 动态织入

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

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

AOP 底层原理:

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

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

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

通知方法的执行顺序:

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

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

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

多切面执行顺序

相关推荐
蚰蜒螟4 分钟前
一次 Spring AOP 与定时任务引发的死锁排查实录
java·spring·firefox
TeamDev4 分钟前
JxBrowser 9.3.1 版本发布啦!
java·前端·javascript·c#·混合应用·jxbrowser·浏览器控件
风吹心凉10 分钟前
python3基础2026.7.22
开发语言·python
qq_4523962317 分钟前
第五篇:《接口与错误处理:Go 的哲学》
开发语言·后端·golang
Escalating_xu31 分钟前
C++可变参数模板与引用折叠精讲
开发语言·c++
wuyk55536 分钟前
59.嵌入式C语言高级宏定义实战:多行宏、字符串化与符号拼接
c语言·开发语言·stm32·单片机·嵌入式硬件·物联网·51单片机
程序猿乐锅39 分钟前
【数据结构与算法 | 第六篇】力扣1109,1094差分数组
java·算法·leetcode
云泽80842 分钟前
Visual Studio 2026 新手保姆级教程:环境搭建、界面优化与编译器配置详解
开发语言·c++·c·开发工具·visual studio
yeflx1 小时前
速腾Airy雷达使用记录
java·服务器·网络
乐之者v1 小时前
AI编程 -- Agents.md 的简单示例
java·ai编程