JDK动态代理和CGLIB动态代理

news/2024/11/8 9:54:53/

JDK动态代理和CGLIB动态代理

      • JDK动态代理和CGLIB动态代理




JDK动态代理和CGLIB动态代理


JDK动态代理只提供接口的代理,不支持类的代理,要求被代理类实现接口。JDK动态代理的核心是InvocationHandler接口和Proxy类,在获取代理对象时,使用Proxy类来动态创建目标类的代理类(即最终真正的代理类,这个类继承自Proxy并实现了我们定义的接口),当代理对象调用真实对象的方法时,
InvocationHandler 通过invoke()方法反射来调用目标类中的代码,动态地将横切逻辑和业务编织在一起;

InvocationHandler 的 invoke(Object proxy,Method method,Object[] args):proxy是最终生成的代理对象; method 是被代理目标实例的某个具体方法;
args 是被代理目标实例某个方法的具体入参, 在方法反射调用时使用。

② 如果被代理类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation
Library),是一个代码生成的类库,可以在运行时动态的生成指定类的一个子类对象,并覆盖其中特定方法并添加增强代码,从而实现AOP。CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的。






我的Github地址,欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。

\开源项目名称依赖类型版本号描述
1spring-boot-starter-triepom1.0.0-SNAPSHOT特定需求下查询速度远超开源检索工具,innodb下B+树或者ES中倒排索引无法与之比拟.
2spring-boot-starter-triejar1.0.0-M1提供了基于SpringCloud的服务节点,可以通过Nacos注册中心进行服务发现,实现了树的动态扩容与缩容,以及服务的动态上下线。
3Data-Providerpom1.0.0-SNAPSHOT提供了多种数据源的查询,以及数据的类型同步,作为一个Jar可以依赖在其他服务上动态的提供数据。

http://www.ppmy.cn/news/85204.html

相关文章

【机器学习】线性模型

文章目录 第三章:线性模型一、线性回归模型1.1、线性回归模型1.2、求解线性回归模型(时刻要分清维度)1.3、多输出线性回归模型 二、线性分类模型2.1、判别函数2.2、概率判别模型2.3、概率生成模型 第三章:线性模型 一、线性回归模…

Linux中的文件描述符

1. 认识文件描述符 文件描述符的概念:在Linux中,文件描述符是内核为了高效的管理已经被打开的文件所创建的索引 ,它是一个非负整数,用于指代被打开的文件,所有执行I/O操作的系统调用都是通过文件描述符完成的。文件描述…

分文件实现温湿度数据管理系统项目

目标: 了解分文件的概念,要依次从C语言的函数声明、变量的存储类别、C语言编译预处理,说起。这些知识点我们之前或多或少接触过,这里做个总结与拓展。经过总结,最后我们归纳出一个实现C语言模块化编程的技巧&#xff…

Vue中组件之间通信的-六大方式-总结

方式一:props/$emit 父组件向子组件传值 通过一个例子,说明父组件如何向子组件传递值:在子组件Users.vue中如何获取父组件App.vue中的数据 users:["Henry","Bucky","Emily"] 注:父组件通过props向…

【leetcode刷题】剑指offer基础版(完结)

leetcode刷题笔记—剑指offer 剑指 Offer 05. 替换空格 class Solution { public:string replaceSpace(string s) {int len s.size();string g;for(int i 0; i < len; i){if(s[i] ){g "%20";continue;}g s[i];}return g;} };剑指 Offer 58 - II. 左旋转字…

Android Qcom Display学习(十五)

该系列文章总目录链接与各部分简介&#xff1a; Android Qcom Display学习(零) 简单方法 按键截图实现原理,通过PhoneWindowManager.java -> DisplayPolicy.java -> ScreenshotHelper.java,这个网上的叙述很多就不展开了 adb shell input keyevent KEYCODE_SYSRQ/fram…

01-bootstrap-概述

Bootstrap 是一款流行的前端开发框架&#xff0c;最初由 Twitter 开发&#xff0c;现在由社区维护。Bootstrap 提供了一套基于 HTML、CSS 和 JavaScript 的模板、样式、组件等&#xff0c;可以帮助开发者快速构建响应式、移动设备友好的网站和 Web 应用程序。 以下是 Bootstra…

百度API实现logo商标识别接口介绍

作者介绍 严松&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研究生 研究方向&#xff1a;机器人抓取检测 电子邮件&#xff1a;2448052777qq.com 王泽宇&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研究生&#xff0c;张…