ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

动态代理类(JDK和CGlib)开发步骤

2022-08-29 15:02:11  阅读:230  来源: 互联网

标签:调用 JDK 对象 步骤 代理 CGlib 方法


开发步骤:

  1.创建被代理类(代理的目标对象)和接口

  2.创建一个实现InvocationHandler接口的类(真正的调用被代理类/目标对象的方法),这个是调用处理器

  3.通过java.lang.reflect下面的Proxy.newProxyInstance()方法得到代理对象,代理类

    Proxy类:用来生成代理对象;

      Proxy.newProxyInstance(类加载器,接口类型,handler)

      InvocationHandler:调用处理器,这个是动态代理的核心;类似于Filter,只不过,它拦截的是方法;

      反射的操作就是一个被动语态

  4.通过代理调用方法

InvocationHandler:调用处理器

2.CGlib

  创建动态代理的第二种方式是使用CGlib

  CGlib是第三方的库,在工程中必须导入

  与JDK动态代理相比,它的特点:

    JDK动态代理必须有接口,而CGlib是创建目标对象的子类,目标对象不能使用final类

JDK动态代理 CGlib
Proxy newProxyInstance() Enhancer
InvocationHandler调用处理器 MethodInterceptor方法拦截器
invoke(Object代理对象,Method方法,Object[]参数) intercepte(Object,代理对象,是目标类的子类,Method方法,Object[]参数,MethodProxy方法代理,通过此对象可以调用代理对象的方法,可以调用父类(目标对象的)方法],可以动过invokeSupper()来调用父类的方法)

 

使用CGlib的步骤:

1.导包

2.定义一个类,实现MethodInterceptor接口,并重写方法

3.使用Enhancer来生成代理对象

步骤

1.导入CGlib包

2.定义一个类,实现MethodInterceptor接口,并重写方法

 

3.使用Enhancer来生成代理对象

 

 也可以,重构一个新的方法,用来为各个真实类生成代理对象

 

标签:调用,JDK,对象,步骤,代理,CGlib,方法
来源: https://www.cnblogs.com/miwaiwai/p/16634706.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有