Javassist的用法
来源:互联网 发布:php扩展加密 编辑:程序博客网 时间:2024/05/29 16:06
1.初始化ClassPool:ClassPool cp = new ClassPool(true);
true代表使用当前类路径
2.插入类路径,通过类路径搜索要加载的类:cp.insertClassPath(new LoaderClassPath(XXX.class.getClassLoader()));
3.构建一个新的CtClass对象:CtClass targetClass = pool.makeClass("com.my.xxx");
4.实现一个接口:targetClass.addInterface(pool.get(IHello.class.getName()));
5.获取返回类型:CtClass returnType = pool.get(void.class.getName());
6.定义方法名称: String methodName = "xxxx";
7.设置参数类型:CtClass[] paramters = new CtClass[]{pool.get(String.class.getName())};
8.创建新的方法:CtMethod method = new CtMethod(returnType,methodName,paramters,targetClass);
9.设置方法体:String bodyStr = "{System.out.println(\"hello\")+$1}"
$1代表是创建的方法的参数
10.给方法设置方法体:method.setBody(bodyStr);
在插庄访问HttpServletRequest中的内容时,如果使用的是tomcat服务器,则需要在
method.insertBefore("类名.方法名($args)")后面加上
pool.get("类名").toClass(ClassLoader,null);
注:
类名是你需要插入进去的类,即编写监控代码的类,且类名必须带上包路径;
ClassLoader是传入的参数
加上上面那一行代码的原意:
JVM的classLoad是从上层向下层找,Tomcat是从下层向上层找
实例代码如下:
public class TestJavassitMain implements ClassFileTransformer{
//在应用或者web程序启动前调用
public static void premain(String argents, Instrumentation inst){inst.addTransformer(new TestJavassitMain());}
}
阅读全文
0 0
- Javassist的用法
- javassist用法
- javassist用法
- javassist基本用法
- javassist 基本用法
- [Java]Javassist基本用法
- BCEL & Javassist 的介绍
- javassist 的简单使用
- javassist 的使用
- javassist的理解
- Dubbo的Javassist代理
- javassist
- Javassist
- Javassist
- JAVAssist
- Javassist
- javassist
- 学习笔记——JAVA字节码操作 Javassist的用法
- ubuntu上minigui调试环境的建立
- cookie和servlet
- Java设计模式(五) 组合模式
- java(11):tomcat简介与使用(上)
- ios TestFlight的使用
- Javassist的用法
- View的事件传递机制
- 反编译工具ILSpy下载
- @Controller和@RestController的区别?
- 6-1 PTA 单链表逆转
- Restful API SpringMVC多版本实现
- base64图片压缩
- 链式存储结构的特点
- css控制元素垂直居中的几种方法