<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.27.0-GA</version>
</dependency>
public class Person {
public void sayHello() {
System.out.println("Hello!");
}
}
public class Main {
public static void main(String[] args) throws NotFoundException, CannotCompileException, IllegalAccessException, InstantiationException {
ClassPool classPool = ClassPool.getDefault();
CtClass ctClass = classPool.get("com.example.Person");
CtMethod ctMethod = ctClass.getDeclaredMethod("sayHello");
ctMethod.insertBefore("{ System.out.println(\"Before sayHello\"); }");
ctMethod.insertAfter("{ System.out.println(\"After sayHello\"); }");
Class<?> modifiedClass = ctClass.toClass();
Person person = (Person) modifiedClass.newInstance();
person.sayHello();
}
}
Before sayHello
Hello!
After sayHello