使用aspect来注入没有Proxy类的InvocationHandler

时间:2013-08-16 17:56:35

标签: java hadoop proxy aop invocationhandler

我想创建一个类,它使用日志信息代理对其超类的方法的所有调用(例如,在语句之前/之后)。

但是,使用此类的框架将通过new(..)调用加载它,或者通过其他反射机制加载它,因此我无法使用Proxy语义来启动类。

有没有办法让new和newInstance()操作在所有情况下都使用代理 - 或者我们是否必须使用Proxy API明确地创建InvocationHandler类的实例?

具体来说:我正在调试一个分布式框架,该框架已经有自己的方法在运行时从XML文件创建类实例(hadoop - mapreduce)。

1 个答案:

答案 0 :(得分:1)

我认为你不能轻易地在Java中修补补丁。我想你可以尝试AOP,或直接黑客攻击这个类(因为你的hadoop会有你的源码)。否则我认为反射或字节码修改可能是一个选项,但它们都将是非常讨厌的。直接攻击类并使用黑客攻击的jar听起来对我来说是最直接的方式。

Btw嗨:)