代码之家  ›  专栏  ›  技术社区  ›  deepakraut

JDK动态代理

  •  0
  • deepakraut  · 技术社区  · 13 年前

    我知道cglib代理通过子类化目标类和重写目标类的方法来工作。

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

    1 回复  |  直到 13 年前
        1
  •  1
  •   sinuhepop    13 年前

    使用 Proxy.newProxyInstance() 您可以请求实现所需接口的代理。你需要通过 InvocationHandler 也是,每次调用任何代理方法时都会调用它。然后,在处理程序中,您知道调用了哪个方法及其参数,因此您可以执行所需操作,包括使用目标对象。

    Java是如何处理这个问题的?好吧,它是本地完成的,就像 reflection 以及许多基本功能。因此,您可以使用纯Java来模拟这种行为。

    扩展信息 here