我学习了hibernate,我明白hibernate已经停止使用cglib并切换到javaassist。
我也理解javaassist和cglib用于代理生成。
所以我想知道这两个是如何工作的,哪个更好? 他们的工作风格有什么区别?
答案 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