0

假设我正在使用一些现有的 java 库,而我只有 .class 文件。但没有得到我期望的结果。所以我查看了源代码,发现那里有一些逻辑,并想看看我的正确值是否到达库代码。

我可以以某种方式记录到达 .class 文件的值吗?是否在考虑 AOP..?

来自外部库的方法。

public void updateValues(String value, MyClass classValue)

例如,我在源代码中看到这一行,当它运行时,我想拦截它,就像将valueand写入classValue日志文件一样。

4

2 回答 2

2

好吧,如果您有源代码,那为什么不调试它呢?

但无论如何 - 可以使用AOP. 你需要.jar在你的类路径中有那个文件。假设您已经配置了AOP,那么您需要做的就是:

<aop:pointcut id="yourPointCut" expression="execution(* package.to.your.class.YourClass.updateValues(..))" />

此切入点将允许您记录updateValues方法的值。

于 2012-10-29T10:03:27.397 回答
1

是的,您可以使用 AOP 来做到这一点,特别是 AspectJ

  • 编译时二进制编织(将建议编织到目标 JAR 中,生成它的新版本)
  • 或加载时编织(不会改变你的 JAR,只是 JVM 中的 Java 类)。

AspectJ 文档非常好。这不是火箭科学,只是刚开始的一个新概念。所以可能需要花一点时间来理解它,但它是一个优雅而强大的工具。

于 2012-11-04T11:13:45.787 回答