JDK动态代理和CGLib有什么区别?

JDK动态代理和CGLib有什么区别?,第1张

JDK动态代理和CGLib有什么区别?

JDK动态代理只能按接口进行代理(因此,您的目标类需要实现一个接口,然后该接口也可以由代理类实现)。

CGLIB(和javassist)可以通过子类化创建代理。在这种情况下,代理将成为目标类的子类。无需接口。

因此,Java Dynamic代理可以代理:

public class Foo implements iFoo
CGLIB可以代理:
publicclass Foo

编辑:

我应该提到的是,由于javassist和CGLIB通过子类化使用代理,因此这就是您在使用依赖于此的框架时无法声明final方法或将类定为final的原因。这将阻止这些库允许子类化您的类并覆盖您的方法。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5475447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存