【发布时间】:2015-09-05 12:14:21
【问题描述】:
我学习了hibernate,我知道hibernate已经停止使用cglib并切换到javaassist。
我也明白javaassist和cglib是用来生成代理的。
所以我想知道这两个是如何工作的,哪个更好? 他们的工作方式有什么不同?
【问题讨论】:
标签: java hibernate proxy javassist cglib
我学习了hibernate,我知道hibernate已经停止使用cglib并切换到javaassist。
我也明白javaassist和cglib是用来生成代理的。
所以我想知道这两个是如何工作的,哪个更好? 他们的工作方式有什么不同?
【问题讨论】:
标签: java hibernate proxy javassist cglib
Cglib 不再积极维护,库的开发人员甚至不会应用提供的补丁:https://jaxenter.com/hibernate-to-deprecate-cglib-as-bytecode-provider-102106.html
此外,javassist 提供了一个用于修改类的 API,而不仅仅是用于子类化。这些 API 还允许字节码级别的操作,而 cglib 只允许几个硬编码的拦截。
最后,性能差异很小。有关概述,请参阅我创建的第三个字节码操作框架 Byte Buddy 的此表:http://bytebuddy.net/#/tutorial
【讨论】: