从.class文件记录值,可能使用AOP拦截

时间:2012-10-29 09:48:00

标签: java logging aop

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

我可以以某种方式记录到达.class文件的值吗?想到AOP ..?

来自外部库的方法。

public void updateValues(String value, MyClass classValue)

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

是的,您可以使用AOP来执行此操作,特别是使用

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

AspectJ文档相当不错。这不是火箭科学,只是一开始的新概念。因此,可能需要一段时间来包围它,但它是一个优雅而强大的工具。