spring AOP
1.前言
AOP 提供一种通用的扩展机制,在业务操作前后提供一些切面的操作,这些操作通常是和业务无关的,例如:日志记录、性能统计、安全控制、事务处理、异常处理等。一个目标类可以被多个切面切入,多个切面也可以切入一个目标类。切面实现的本质是一个或多个基于连接点的拦截器。
Spring AOP 底层是基于动态代理实现的,对实现接口的类进行代理,默认使用 JDK 动态代理,对没实现接口的类,使用 CGLIB 动态代理。Spring AOP 中的目标类不管有没有实现接口,都可以通过配置来强制使用 CGLIB 代理方式--->>>@EnableAspectJAutoProxy(proxyTargetClass = true)
2.术语
- Aspect(切面):切入一个或多个类的模块
- Join point(连接点):程序执行的节点,例如执行方法或处理异常
- Advice(通知):切面在连接点执行的动作,例如前置通知
- Pointcut(切点):用于匹配连接点,一般通过表达式匹配
- Target object(目标对象):被切入的对象,可以被一个或多个切面切入
3.通知类型
4.AOP 使用方式
- 1.XML配置
- 2.注解形式
- 3.Advisor代码形式
5.常用注解
6.通知的执行顺序
1.单个切面
2.多个切面
- 多个切面可通Order注解控制切面的整体执行顺序
- 多个切面各个增强顺序如何?
- 即:先执行切面order(1)的连接点执行前的增强,然后执行order(2)连接点执行前的增强,再执行order(2)连接点执行后的增强,再执行order(1)连接点执行后的增强
- 即:先执行切面order(1)的连接点执行前的增强,然后执行order(2)连接点执行前的增强,再执行order(2)连接点执行后的增强,再执行order(1)连接点执行后的增强
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!