cglib与JDK动态代理适用场景

JDK动态代理

优点

  • 不依赖第三方jar包, 使用方便
  • 随着JDK的升级,JDK动态代理的性能在稳步提升

缺点

  • 只能代理实现了接口的类
  • 执行速度较慢

适用场景

如果你的程序需要频繁、反复地创建代理对象,则JDK动态代理在性能上更占优。

cglib

优点

  • 由于是动态生成字节码实现代理,因此代理对象的执行速度较快, 约为JDK动态代理的1.5 ~ 2倍
  • 可以代理没有实现接口的对象

缺点

  • 不能代理final
  • 动态生成字节码虽然执行较快,但是生成速度很慢,根据网上一些人的测试结果,cglib创建代理对象的速度要比JDK慢10 ~ 15倍。

适用场景

不需要频繁创建代理对象的应用,如Spring中默认的单例bean,只需要在容器启动时生成一次代理对象。

你可能感兴趣的:(java)