¶spring-instrument源码阅读
¶spring-instrument模块功能
- instrument提供了允许java通过代理服务来检测运行在jvm上的程序,可以对方法的字节码进行修改,实现虚拟机级别的aop
- instrument功能是在java se5中加入的,instrument要求在运行前用命令行或系统参数来设置代理类.也就是在运行前设置代理类
- 在java se6中加入了动态控制的代理的能力
- 监控和控制虚拟机的行为。
¶asm与instrument
- asm与instrument一样,都能操作字节码。但是instrument是在整个虚拟机上挂了一个钩子函数,每次装入一个新类,都必须执行这个函数,如果是用在改造类上,会造成很大的资源浪费。instrument更适合与监控和控制虚拟机的行为。
- asm和instrument的侧重点不同,asm侧重改造字节码,实现动态代理;instrument侧重监控和控制虚拟机。
¶spring-instrument代码结构
¶spring-instrument源码
¶InstrumentationSavingAgent
1 | /* |