最近研究了一下切面编程框架,打算写一个自己的切面框架,参照市面上常见的框架
1.AspectJ(打包时修改字节文件,但要写Groovy脚本感觉不太方便)
2.AbstractProcessor(编译时添加类,使用上还行,但是做不到代码插入)
3.Javassit(运行时,修改类文件,没仔细研究,估计和热修复原理差不多,而且会影响性能,不考虑)
4.ASM(网上搜说是可以编译期直接修改编译出的字节码文件,也能做到Javassit运行时修改的功能)。
看完这些......我感觉都没我想要的。于是思考了两天,我还是决定不如直接自己动手打造个插件,只要能在所有方法中添加统一代码不就可以了吗?这样在做一些日志埋点,日志输出等一些重复功能的情况下,不也不用手动去写了吗?
插件地址(AS/IDEA都可用):https://github.com/dxh104/AutoInsertCode
目前只实现了,单个类的全部方法的添加。全部类的方法添加也能做到,后面有需要再更新吧。