【问题标题】:Using aspects to inject InvocationHandlers without Proxy class在没有代理类的情况下使用方面注入 InvocationHandlers
【发布时间】:2013-08-16 17:56:35
【问题描述】:

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

但是,使用这个类的框架将通过 new (..) 调用加载它,或者通过其他反射机制加载它,所以我不能使用代理语义来启动这个类。

有没有办法让 new 和 newInstance() 操作在所有情况下都使用代理 - 还是我们必须使用代理 API 显式创建 InvocationHandler 类的实例?

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

【问题讨论】:

    标签: java hadoop proxy aop invocationhandler


    【解决方案1】:

    我不认为你可以在 Java 中轻松修改补丁。我认为您可以尝试 AOP,或者直接破解该类(因为您将拥有源代码,因为它是 hadoop)。否则我认为反射或字节码修改可能是一种选择,但它们都会非常讨厌。对我来说,直接破解类并使用破解的 jar 听起来是最直接的方法。

    顺便说一句,嗨:)

    【讨论】:

    • 同意可能添加一个被黑的 jar,保证在 ClassLoader 中具有优先权,这可能是正确的方法。
    • 嗨,恩诺!刚刚了解 BYTEMAN 。也许会有所帮助,但不确定。
    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 2022-12-17
    • 2016-05-10
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多