Spring的AOP的底层实现原理?
2024-08-27 10:28:30
aop是ioc的一个扩展功能,先有的ioc,再有的aop,只是在ioc的整个流程中新增的一个扩展点而已:BeanPostProcessor
底层实现用的是动态代理
AOP应用场景
场景一: 记录日志
场景二: 监控方法运行时间 (监控性能)
场景三: 权限控制
场景四: 缓存优化 (第一次调用查询数据库,将查询结果放入内存对象, 第二次调用, 直接从内存对象返回,不需要查询数据库 )
场景五: 事务管理 (调用方法前开启事务, 调用方法后提交关闭事务 )
bean的整个创建过程中有一个步骤可以对bean进行扩展实现,aop本身就是一个扩展功能,所以在BeanPostProcessor的后置处理方法中,来进行实现。
1、代理对象的创建过程(advice,切面,切点)
2、通过jdk或者cglib的方式来生成代理对象
3、在执行方法调用的时候,会调用到生成的字节码文件中,直接会找到DynamicAdvicedInterceptor类中的intercept方法,从此方法开始执行
4、根据之前定义好的通知来生成拦截器链
5、从拦截器链中依次获取每一个通知开始进行执行,在执行过程中,为了方便找到下一个通知是哪一个,会有一个InvocationInterceptor的对象,找的时候是从-1开始查找并且执行的。
最新文章
- 阅读笔记Multi-task Learning for Stock Selection [NIPS1996]
- javascript 中的事件机制
- D_S 线性结构
- Java 链式编程
- 针对access数据库的增删改查
- Bctf-pwn_ruin-re_lastflower
- jquery 实现飘落效果
- JavaScript中的面向对象程序设计
- WebService学习------小实例开发(号码归属地查询)
- 卸载windows补丁
- 7.4 GRASP原则四:控制器 Controller
- 基于JMH的Benchmark解决方案
- SHOW Syntax
- Linq的执行效率及优化
- 【托业】【新托业TOEIC新题型真题】学习笔记4-题库一->;P7
- hdu3879 最大权闭合回路
- 用js实现回车登录而不用点击登录按钮
- 【大数据系列】Hadoop DataNode读写流程
- Javascript异步执行时要小心的变量作用域
- 在控制终端输入AT命令