我有一个包含多个 .class 文件的 jar 文件。每个 .class 文件中都有多个方法。现在,当 jar 正在执行时,即在运行时,我想使用外部用户定义的方法来拦截这些方法。也就是说,我想在 jar 类中的每个方法调用之前或之后运行外部方法。
我已经研究过 Spring-AOP,但它说我需要在 Spring 上下文中声明类,因此将按照在 Spring 上下文中编写的顺序调用这些类及其方法。
但我希望执行流程是原始 jar webapp 的执行流程。
您能与我分享任何可以用来实现我上面解释的内容吗?提前致谢!
最佳答案
您可以使用 JVM 检测 API,它允许您使用像 http://commons.apache.org/proper/commons-bcel/ 这样的库修改正在加载的类。 。请参阅此处的示例 https://web.archive.org/web/20181012004753/http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html
关于java - 如何在不更改代码的情况下动态拦截 jar 中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19997465/