Java 记录.class文件中的值,可能使用AOP进行拦截

Java 记录.class文件中的值,可能使用AOP进行拦截,java,logging,aop,Java,Logging,Aop,假设我正在使用一些现有的java库,而我只得到了.class文件。但是没有得到我期待的结果。因此,我查看了源代码,发现其中有一些逻辑,并想看看我的正确值是否到达库代码 我可以记录到达.class文件的值吗?我在想AOP 来自外部库的方法。 public void updateValues(String value, MyClass classValue) 例如,我在源代码中看到这一行,当它运行时,我想截取它,就像将值和类值写入日志文件一样 但无论如何,使用AOPAOP是可能的。您需要在类路径中

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

我可以记录到达.class文件的值吗?我在想AOP

来自外部库的方法。

public void updateValues(String value, MyClass classValue)

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

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

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


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

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

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

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


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

是的,您可以使用AOP来完成此操作,特别是使用AspectJ

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

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

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

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

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

我有.jar文件,我在eclipse中附加了源代码。我想每次修改代码时都必须重新编译代码,然后每次都将包复制到我的maven文件夹中,并以某种方式禁用maven自动更新库。似乎需要很多努力,所以考虑了AOP。我从未使用过AOP,所以我没有配置它……我可以使用AspectJ或其他什么吗?我只知道它存在,但实际上没有任何线索。我有.jar文件,我在eclipse中附加了源代码。我想每次修改代码时都必须重新编译代码,然后每次都将包复制到我的maven文件夹中,并以某种方式禁用maven自动更新库。似乎需要很多努力,所以考虑了AOP。我从未使用过AOP,所以我没有配置它……我可以使用AspectJ或其他什么吗?我只知道它存在,但真的没有线索。加载时编织就像osgi?我不必重新启动我的服务?请阅读一些介绍材料。不,巧克力不像雪哈哈,好的,谢谢:)那么,加载时编织有点像jrebel?它会改变字节码?加载时编织就像osgi?我不必重新启动我的服务?请阅读一些介绍材料。不,巧克力不像雪哈哈,好的,谢谢:)那么,加载时编织有点像jrebel?它改变字节码?