# proxy-demo **Repository Path**: icehand/proxy-demo ## Basic Information - **Project Name**: proxy-demo - **Description**: java 中代理的例子 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-04-04 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # proxy-demo #### 介绍 java 中代理的例子 #### 静态代理 1) 接口:代理类需要实现一个接口,这个接口和委托类的接口是一样的,这样proxy才能和委托类行为表现一致 2) 方法(Method):由于接口限制,proxy类中也要有interface中的各个方法,这就造成了代码重复 3) 在编译期就已经生成确定了对应的代理关系 #### JDK动态代理 1) Interface:对于JDK proxy,业务类是需要一个Interface的,这也是一个缺陷 2) Proxy 类是动态产生的,这个类在调用Proxy.newProxyInstance(targetCls.getClassLoader, targetCls.getInterface,InvocationHander)之后,会产生一个Proxy类的实例。实际上这个Proxy类也是存在的,不仅仅是类的实例。这个Proxy类可以保存到硬盘上。 3) Method:对于业务委托类的每个方法,现在Proxy类里面都不用静态显示出来 4) InvocationHandler: 这个类在业务委托类执行时,会先调用invoke方法。invoke方法再执行相应的代理操作,可以实现对业务方法的再包 5) JDK动态代理利用了反射原理 6) 在运行期间使用动态生成字节码,动态创建代理类 #### Cglib动态代理 1) cglib是针对类来实现代理的,他的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强,但因为采用的是继承,所以不能对final修饰的类进行代理 2) 在运行期间使用动态生成字节码,动态创建代理类