首页 > 其他分享 >动态代理类(JDK和CGlib)开发步骤

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

时间:2022-08-29 15:03:27浏览次数:45  
标签:调用 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,方法
From: https://www.cnblogs.com/miwaiwai/p/16634706.html

相关文章

  • linux离线安装JDK方法
    下载文件:jdk-8u241-linux-x64.tar.gz一.卸载1.检查系统中原版本:[root@localhost~]#java-versionjavaversion"1.7.0_"OpenJDKRuntimeEnvironment(IcedTea61.......
  • JDK环境变量的配置
    1. JDK环境变量的配置配置环境变量之前,是已经安装了JDK了。假设已经安装好了JDK了,高版本的JDK无需手动配置环境变量,低版本的JDK需要配置环境变量,这里以JDK1.8为例......
  • 新手如何安装JDK
    如何安装JDK百度打开点击打开Oracle点击JAVA然后点击downloadJava找到你所在的版本然后点击下载安装目录必须记着创建目录JAVA_HOME变量为安装java的......
  • Linux上安装jdk 1.8
    1、下载jdk1.8这里贴个oracle官网链接 https://www.oracle.com/java/technologies/downloads/ 里面的jdk版本基本都有2、将压缩包上传到Linux服务器中我使用的是wi......
  • 安装JDK出现"Windows Installer程序包有问题,此安装需要的DLL不能运行"解决方法
    安装JDK出现"WindowsInstaller程序包有问题,此安装需要的DLL不能运行"解决方法_turbomit的博客-CSDN博客_java此安装需要的dll不能运行 https://blog.csdn.net/u0136907......
  • ubuntu22.04+qt6.2安装步骤
    chmod+xqt-unified-linux-x64-4.4.1-online.runsudoaptinstallvimsudoaptinstallnet-toolssudoaptinstallopenssh-serversudoapt-getinstallbuild-essen......
  • 【解决步骤】TortoiseGitPlink Fatal Error:No supported authentication methods avai
    解决步骤打开TortoiseGit的设置,点击网络,然后更改SSH客户端的路径为Git的:  默认情况下TortoiseGit的SSH客户端时TortoiseGitPlink,这个好像在很多情况下都无法正常工作......
  • jdk8的新特性之-lambda表达式的使用
    Lambda表达式允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda表达式可以使代码变的更加简洁紧凑。语法lambda表达式的语法格式如下:(parame......
  • SM整合的步骤
    SM整合的步骤1>建表2>新建项目,选择quickstart模板3>修改目录4>修改pom.xml文件,添加相关的依赖5>添加MyBaits相应的模板(SqlMapconfig.xml和XXXMapper.xml文件)6>添......
  • Centos7 安装jdk1.8
    Centos7安装jdk1.8一下载linux版jdk我们安装jdk1.8地址:https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html找到对应版本下载:需要账号......