gpt4 book ai didi

spring - 使用 Javassist 将代码注入(inject)方法

转载 作者:行者123 更新时间:2023-12-01 19:50:12 25 4
gpt4 key购买 nike

我正在尝试将一些代码添加到 jar(maven 依赖项)中的类中,我正在通过以下方式进行:

ClassPool classPool = ClassPool.getDefault();

CtClass ctClass = classPool.get("xyz.abc.ClassInADependecy");

CtMethod method = ctClass.getDeclaredMethod("getSomeValue");

method.insertBefore("{ System.out.println(\"modified\"); }");

我正在使用 Spring,上面的代码是使用 @Configuration 注释调用的。

当我调用 getSomeValue 方法时,没有打印任何内容。

你能帮我找出我做错了什么吗?

非常感谢。

最佳答案

您只是在更改 Javassists 类型池中表示的实现。您必须确保该类也由相应的类加载器加载。此外,这必须在第一次加载该类之前发生,即在您的 Spring 应用程序加载该类之前。

这样做的一种方法是从 Java 代理操作类:https://docs.oracle.com/javase/7/docs/api/java/lang/instrument/package-summary.html

关于spring - 使用 Javassist 将代码注入(inject)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37931064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com