java—使用方面注入调用处理程序而不使用代理类

beq87vna  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(285)

我想创建一个类,用日志信息(例如,before/after语句)将所有对方法的调用代理给它的超类。
但是,使用这个类的框架将通过新的(..)调用加载它,或者通过其他反射机制加载它,所以我不能使用代理语义来启动这个类。
有没有办法让new和newinstance()操作在所有情况下都使用代理-或者我们必须使用代理api显式地创建invocationhandler类的示例?
具体来说:我正在调试一个分布式框架,它已经有了自己的方法在运行时从xml文件创建类示例(hadoop-mapreduce)。

qvk1mo1f

qvk1mo1f1#

我不认为你能轻易地用java修补程序。我认为您可以尝试aop,或者直接对类进行黑客攻击(因为您将获得源代码,因为它是hadoop)。否则,我认为反射或字节码修改可能是一种选择,但它们都将非常糟糕。对我来说,直接破解类和使用一个被破解的jar听起来是最简单的方法。
顺便说一句,你好:)

相关问题