1
2
3
4
5
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.28.0-GA</version>
</dependency>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package com.example.demospringboot;

import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;

/**
* @author shuzhuo
* @date 2022/1/24 18:48
*/
public class Test {

public static void main(String[] args) throws Exception{

ClassPool pool = ClassPool.getDefault();
// pool.importPackage(); 导入包
pool.insertClassPath("E:\\ideaProject2\\demo-springboot\\target\\demo-springboot-0.0.1-SNAPSHOT.jar");//加载指定路径下的库。如果此库已被引入项目中,可以省略这一步
CtClass cc = pool.get("com.example.demospringboot.user.UserController");//加载指定的类
CtClass[] params = new CtClass[]{pool.get("java.lang.Object")};//基本类型和引用类型的描述方式是不一样的
CtMethod method = cc.getDeclaredMethod("test");//取得需要修改的方法
method.setBody("{System.out.println(\"1\");return \"1\";}"); //修改方法
cc.writeFile("D:/test");//保存到指定位置,执行完这一步后就会在指定目录生成你需要的 class 文件

}
}