【发布时间】:2012-10-01 20:32:11
【问题描述】:
我知道 cglib 代理通过继承目标类和覆盖目标类的方法来工作。
谁能说出动态代理的工作原理? 我知道它使用接口进行代理,但是方法调用究竟是如何通过代理发生的?
【问题讨论】:
-
这个链接很好地解释了代理blog.frankel.ch/tag/proxy
标签: java proxy aop proxy-classes
我知道 cglib 代理通过继承目标类和覆盖目标类的方法来工作。
谁能说出动态代理的工作原理? 我知道它使用接口进行代理,但是方法调用究竟是如何通过代理发生的?
【问题讨论】:
标签: java proxy aop proxy-classes
使用Proxy.newProxyInstance(),您可以请求实现所需接口的代理。您还需要传递一个InvocationHandler,每次调用任何代理方法时都会调用它。然后,在您的处理程序中,您知道调用了哪个方法及其参数,因此您可以做您想做的事情,包括使用目标对象。
Java 是如何处理这个问题的?嗯,它是本地完成的,就像reflection 的内部结构和许多基本功能一样。因此,您可以使用纯 Java 模拟这种行为。
扩展信息here。
【讨论】: