cglib和Jdk的对比

CGLIB

利用ASM字节码框架,将代理对象生成的class文件加载,修改其字节码,采用继承方式,生成子类进行处理。
Cglib针对类实现代理,主要针对指定的类生成子类,并覆盖目标方法,达到增强的效果。
由于是使用继承,所以对于final的类或者方法,无法代理

JDK

通过反射机制生成代理接口的匿名类。主要针对接口,而非类。

Spring的选择

Bean实现接口,选用JDK
Bean没有实现接口,选用CGLIB

参考文章:Spring的两种动态代理:Jdk和Cglib 的区别和实现

posted @ 2021-01-18 22:05  lifelikeplay  阅读(204)  评论(0编辑  收藏  举报