码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JDK动态代理与CGLIB动态代理


    jdk动态代理

    1、必须实现 InvocationHandler 接口
    2、使用 Proxy.newProxyInstance 产生代理对象
    3、被代理的对象必须要实现接口

    用 Proxy.newProxyInstance 产生代理对象利用参数被代理对象的类加载器和被代理对象实现的所有接口生成指定的代理类—>获取代理类的构造函数对象---->根据代理类的构造函数对象来创建需要返回的代理类对象
    返回值:$Proxy0(代理对象):App类运行时,JDK动态构建出来的代理类,继承至Proxy类

    InvocationHandler 的 invoke()
    使用invoke方法对被代理人的方法进行拦截, 为真实对象定制代理逻辑
    *
    第一个参数为 代理对象
    *
    第二个参数为目标类的真实方法
    *
    第三个参数为目标方法参数

    后面两个参数决定调用被代理类的哪个方法

    CGlib动态代理

    CGLIB 通过动态生成一个需要被代理类的子类(即被代理类作为父类),该子类重写被代理类的所有不是 final 修饰的方法,并在子类中采用方法拦截的技术拦截父类所有的方法调用,进而织入横切逻辑
    在底层实现上,CGLIB 使用字节码处理框架 ASM,该框架用于转换字节码并生成新的类

    区别

    JDK 动态代理只能对接口进行代理,不能对普通的类进行代理,这是因为 JDK 动态代理生成的代理类,其父类是 Proxy,且 Java 不支持类的多继承。
    CGLIB 能够代理接口和普通的类,但是被代理的类不能被 final 修饰,且接口中的方法不能使用 final 修饰。
    JDK 动态代理使用 Java 反射技术进行操作,在生成类上更高效。
    CGLIB 使用 ASM 框架直接对字节码进行修改,使用了 FastClass 的特性。在某些情况下,类的方法执行会比较高效。

  • 相关阅读:
    [PyTorch]即插即用的热力图生成
    张高兴的 .NET IoT 入门指南:(八)基于 GPS 的 NTP 时间同步服务器
    vb加了me
    基于海鸥算法的无人机航迹规划-附代码
    Tonka Finance,BTCFi 浪潮的发动机
    基于模糊测试方法实现车载通信测试
    盲人出行好帮手:蝙蝠避障让走路变简单
    【EI会议征稿通知】2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)
    4.1提出问题&4.2拉格朗日插值
    Elasticsearch
  • 原文地址:https://blog.csdn.net/weixin_45511599/article/details/126281501
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号