网站建设总体说明书江门网站建设总部电话
原文网址:JDK动态代理和CGLib动态代理的区别_IT利刃出鞘的博客-CSDN博客
简介
本文介绍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动态代理--实例/原理_IT利刃出鞘的博客-CSDN博客
动态代理(CGLIB)
见:CGLIB动态代理--实例/原理_IT利刃出鞘的博客-CSDN博客
