javaassist和cglib之间的区别

时间:2015-09-05 12:14:22

标签: java hibernate proxy javassist cglib

我学习了hibernate,我明白hibernate已经停止使用cglib并切换到javaassist。

我也理解javaassist和cglib用于代理生成。

所以我想知道这两个是如何工作的,哪个更好? 他们的工作风格有什么区别?

1 个答案:

答案 0 :(得分:5)

不再主动维护Cglib,图书馆的开发人员甚至不会应用提供的补丁:https://jaxenter.com/hibernate-to-deprecate-cglib-as-bytecode-provider-102106.html

此外,javassist提供了一个用于修改类的API,而不仅仅是对它们进行子类化。这些API也允许字节代码级操作,而cglib只允许几个硬编码拦截。

最后,性能差异很小。有关概述,请参阅此表,了解我创建的第三个字节代码操作框架Byte Buddy:http://bytebuddy.net/#/tutorial