SpringBoot自定义maven-plugin插件整合asm代码插桩
程序员文章站
2024-03-27 13:06:22
背景公司开发框架增加了web系统license授权证书校验模块,实行一台机器一个授权证书,初步方案是增加拦截器针对全局请求进行拦截校验,评估后认为校验方式单一,应该增加重要工具类,业务service实...
背景
公司开发框架增加了web系统license授权证书校验模块,实行一台机器一个授权证书,初步方案是增加拦截器针对全局请求进行拦截校验,评估后认为校验方式单一,应该增加重要工具类,业务service实现中每个方法的进行校验,因为涉及代码量较大硬编码工作困难,故选择通过自定义maven插件在编译期间进行动态代码插桩操作
项目配置
新建maven项目设置打包方式
增加依赖项
build内容配置
编译拦截
创建编译操作类frameplugin,继承abstractmojo并使用mojo注解标注,output参数是class文件编译后路径
asm插桩
新建classvisitor重写visitmethod方法来过滤访问需要插桩的方法,需要排除自带的init方法
新建methodvisitor重写visitcode方法针对方法内部字节码进行自定义操作,这里是使用框架内部封装好的一个静态方法来校验license证书
最后在execute中进行文件递归查找调用,就是将已经编译的class文件读取/自定义操作后保存
项目使用
maven-plugin项目执行mvn install安装到本地仓库
框架项目配置自定义maven插件进行打包,配置执行的声明周期为complie(编译),这里goal自定义命令名称需要和mojo注解标注类中指定的name名称一致
到此这篇关于springboot自定义maven-plugin插件整合asm代码插桩的文章就介绍到这了,更多相关maven-plugin asm代码插桩内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!