Java 在spring项目中如何在bean初始化之前重新定义类
我在另一个jar中有一个类,我在B bean中使用它。 现在我想为类中的方法添加日志。我如何在我的项目中做到这一点而不修复jar呢 我的心:Java 在spring项目中如何在bean初始化之前重新定义类,java,jvm-bytecode,Java,Jvm Bytecode,我在另一个jar中有一个类,我在B bean中使用它。 现在我想为类中的方法添加日志。我如何在我的项目中做到这一点而不修复jar呢 我的心: 使用ApplicationListener在bean初始化之前重新定义类 在onApplicationEvent()中执行某些操作以重新定义A类。//这是我的问题 我知道可以使用asm或其他工具来修复字节码。我看到了仪器,没有找到解决办法 一节课 public class A { public void find(){ System.out.p
public class A {
public void find(){
System.out.println("aaa");
//i want to add log here.
}
菜豆
@Service public class B {
public A get(){
return new A();
}
应用程序侦听器
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if(event.getApplicationContext().getParent() != null){
return;
}
// redefine class
}
然后,当我使用b.get().find()时,它将打印我添加的日志 找到我的解决方案。
使用javassist修改类。并预先加载它(使用CtClass.toClass())。