# study-proxy **Repository Path**: imdongrui/study-proxy ## Basic Information - **Project Name**: study-proxy - **Description**: Java中静态代理、动态代理及基于cglib的代理的学习工程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-30 - **Last Updated**: 2021-07-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: study ## README # 介绍 这是一个Java中静态代理、动态代理及基于cglib的代理的学习工程 # 概述 ## 静态代理 静态代理即用代理模式,通过在代码中手动创建代理类的方式,来对委托类进行代理。 这种方式实现简单,容易理解,但如果需要被代理的类很多,将会增加很多模板代码,增加工作量,所以比较适合简单程序中使用。 ## 动态代理 通过jdk提供的Proxy类来实现代理,其原理是代理类与委托类实现同一接口,然后通过代理类调用函数,会交由InvocationHandler的invoke函数进行处理,从而实现代理。 这种方式不需要像静态代理那样对每个委托类都编写代理类,统一使用jdk提供的Proxy类来实现。 ## 基于cglib的代理 CGLIB(Code Generation Library)是一个开源项目,是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。 基于cglib的上述特性,我们可以在运行时为委托类生成代理类,基本原理是生成一个继承自委托类的类即代理类,cglib允许我们为其设置一个回调处理类,即从代理类执行函数时,会被回调处理类拦截,从而实现切面操作。 因为cglib的代理是通过继承委托类并重写委托类函数实现的,而final修饰的函数无法被重写,所以final修饰的函数无法被代理。 # 传送门 [动态代理总结,你要知道的都在这里,无废话!](https://juejin.cn/post/6963050105893027871#heading-4) [cglib-百度百科](https://baike.baidu.com/item/cglib/9178356?fr=aladdin)