所有分类
  • 所有分类
  • 未分类

JDK动态代理和CGLib动态代理的区别

简介

本文介绍Java中JDK动态代理和CGLib动态代理的区别。

区别概述

JDK动态代理CGLIB动态代理
接口是否需实现只能代理实现了接口的类。可以代理没有实现接口的类。
原理继承自Proxy,Proxy中有InvocationHandler的实现类的引用。 调用被代理的类的方法时,会调用父类(Proxy)的InvocationHandler的invoke方法。对指定的目标类生成一个子类并覆盖其中方法。
是否支持final class支持。不支持。 因为CGLIB是生成子类来实现AOP。
执行效率JDK6:比CGLIB效率低一点。 JDK1.7与1.8:效率高于CGLIB(1W次调用,高20%)JDK1.6之前,效率比JDK高。

实例

动态代理(JDK)

见:JDK动态代理–实例/原理 – 自学精灵

动态代理(CGLIB)

见:CGLIB动态代理–实例/原理 – 自学精灵

0

评论0

请先

显示验证码
没有账号?注册  忘记密码?

社交账号快速登录