【问题标题】:Advantages of JDK dynamic proxiesJDK动态代理的优点
【发布时间】:2013-09-02 11:40:50
【问题描述】:

JDK 动态代理有哪些优势?尤其是与 CGLIB 代理相比。 尽管 JDK 代理不会带来对任何第三方库的依赖,但 JDK 代理的其他优势是什么?
我在几个地方读到 CGLIB 代理比 JDK 代理稍快。此外,CGLIB 代理不需要代理类来实现任何接口。由此看来,CGLIB 代理似乎优于 JDK 代理。这是真的吗?

【问题讨论】:

标签: java proxy-classes cglib


【解决方案1】:

我只想了解 JDK 动态代理的用例及其优势。

用例大致相同/

或者它们只是被弃用了?

没有。 JDK 动态代理不被弃用。检查 javadoc。

我应该总是使用 CGLIB 代替吗?

不……并非总是如此。您已经确定了一种您不会确定的情况。还有@Evgeniy Dorofeev。已确定另一个...在我链接到的问题中也已确定!

要考虑的第三件事是使用哪个版本的 CGLIB,以及它是否与您正在使用的其他东西兼容。 (人们会期望 JDK 动态代理比 CGLIB 更稳定……基于它的来源。性能不是选择的唯一标准。)

但基本上,这取决于您自己的决定……根据您的实际系统要求,而不是一些随机的建议。

【讨论】:

  • 感谢您的见解。这就是我问的原因,如果我想做出决定,我需要了解 JDK 动态代理的优势。从上面提到的情况来看,JDK 动态代理似乎是正确的选择。
【解决方案2】:

使用 CGLIB 代理类的一个缺点是它不能与 final 方法一起使用,因为它们不能被覆盖。

【讨论】:

  • 但是动态代理在这种情况下也不起作用......他们会吗?
  • 他们会的,我们可以有一个带有公共最终方法的类,它实现了一个接口方法,动态代理可以处理这样的方法
  • 所以这是 JDK 动态代理的第一种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2021-09-28
  • 1970-01-01
  • 2012-08-20
相关资源
最近更新 更多