网站 只收录首页,wordpress模板排行榜,短链接生成器官方,网站开发制作熊掌号前言#xff1a;
此次用到的jar包 Javassist 此篇博文不是教大家怎么去了解他#xff0c;因为我也不是很了解
主要是因为这两天有一个需求是扩展knife4j 需要用到大量反射了解到的。
因为这方面资料太少了。我也是慢慢摸索出来的。把这些发出来吧。
我理解的 Javassist 主…前言
此次用到的jar包 Javassist 此篇博文不是教大家怎么去了解他因为我也不是很了解
主要是因为这两天有一个需求是扩展knife4j 需要用到大量反射了解到的。
因为这方面资料太少了。我也是慢慢摸索出来的。把这些发出来吧。
我理解的 Javassist 主要是对字节码方面的一些操作。
因为我需要在不修改源码的情况下动态扩展字节码然后将字节码加载到springIoc容器中。
我主要用到了
给类添加注解
给方法添加注解
给注解添加属性
将接口转为类
给方法添加方法体
添加无参构造
添加有参构造
给接口添加参数
其实看起来不多。着实的采了一堆坑我分开发吧每个不同的功能分开发 原生测试类 里面啥都没有我主要是要给方法添加形参。 添加形参之后的方法class 代码 //获取类池ClassPool classPool ClassPool.getDefault();CtClass ctClass null;try {//获取类 全类名ctClass classPool.getCtClass(aa.bb.cc.AAAA);//获取方法 根据普通反射获取CtMethod method ctClass.getDeclaredMethod(aaa);//给方法添加形参 其实这里看起来就两段话但是采了不少坑CtClass ctClass1 classPool.get(String.class.getName());method.addParameter(ctClass1);//通过类加载器加载该CtClassctClass.toClass();//根据CtClass生成 .class 文件 我指定生成在当前目录下方面看class编译后的内容ctClass.writeFile(D:\\develop\\peojiect\\springboot_demo\\silence-spring-auto\\src\\main\\java);} catch (Exception e) {e.printStackTrace();} pom dependencygroupIdorg.javassist/groupIdartifactIdjavassist/artifactIdversion3.28.0-GA/version/dependency