Java 使用方面在不使用代理类的情况下注入调用处理程序

Java 使用方面在不使用代理类的情况下注入调用处理程序,java,hadoop,proxy,aop,invocationhandler,Java,Hadoop,Proxy,Aop,Invocationhandler,我想创建一个类,该类使用日志信息(例如,before/after语句)将所有对方法的调用代理给它的超类 但是,使用这个类的框架将通过新的(..)调用加载它,或者通过其他反射机制加载它,所以我不能使用代理语义来启动这个类 有没有办法让new和newInstance()操作在所有情况下都使用代理?还是我们必须使用代理API显式地创建InvocationHandler类的实例 具体地说:我正在调试一个分布式框架,它已经有自己的方法在运行时从XML文件创建类实例(hadoop-mapreduce) 我认

我想创建一个类,该类使用日志信息(例如,before/after语句)将所有对方法的调用代理给它的超类

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

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


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

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


顺便说一句,你好:)

我不认为你可以轻松地在Java中使用monkey补丁。我认为您可以尝试AOP,或者直接对类进行黑客攻击(因为您将获得源代码,因为它是hadoop)。否则,我认为反射或字节码修改可能是一种选择,但它们都将非常糟糕。对我来说,直接攻击类和使用被攻击的jar听起来是最简单的方法


顺便说一句:)

同意可能添加一个被黑客攻击的jar,这在类加载器中需要有优先权,这可能是正确的方法。嗨,enno!刚才在了解拜特曼。也许这会有帮助,但不确定。我同意可能添加一个被黑客攻击的jar,这在类加载器中需要有优先权,这可能是正确的方法。嗨,enno!刚才在了解拜特曼。也许会有帮助,但不确定。