【问题标题】:JDK Dynamic ProxyingJDK 动态代理
【发布时间】:2012-10-01 20:32:11
【问题描述】:

我知道 cglib 代理通过继承目标类和覆盖目标类的方法来工作。

谁能说出动态代理的工作原理? 我知道它使用接口进行代理,但是方法调用究竟是如何通过代理发生的?

【问题讨论】:

标签: java proxy aop proxy-classes


【解决方案1】:

使用Proxy.newProxyInstance(),您可以请求实现所需接口的代理。您还需要传递一个InvocationHandler,每次调用任何代理方法时都会调用它。然后,在您的处理程序中,您知道调用了哪个方法及其参数,因此您可以做您想做的事情,包括使用目标对象。

Java 是如何处理这个问题的?嗯,它是本地完成的,就像reflection 的内部结构和许多基本功能一样。因此,您可以使用纯 Java 模拟这种行为。

扩展信息here

【讨论】: