2.3.3 CGLIB动态代理 -《SSM深入解析与项目实战》
2.3.3 CGLIB动态代理
前面介绍了JDK的动态代理,从一些实例也可以看到,JDK动态代理是依赖于实现的接口的。而CGLIB弥补了这个缺点,让我们在不需要实现接口的情况下,也可以实现动态代理。JDK动态代理和CGLIB动态代理在Spring实现AOP中都是使用到的技术,Spring AOP默认是使用JDK动态代理来代理接口的,但是可以进行强制使用CGLIB动态代理。
CGLIB内部使用了ASM(Java字节码操控框架)来进行转换字节码。可以代理没有接口类的类。所以相比较JDK动态代理来说,灵活一些,更值得称赞的地方是,由于CGLIB第通过字节码产生子类进行覆盖委托类的非final方法进行代理,而JDK动态代理使用Java类反射进行代理,所以CGLIB动态代理比JDK动态代理更快。注意,CGLIB不能对final和私有方法进行代理。
实例演示。首先创建一个委托类(目标类)。
代码清单2-25:AliPay目标类
public class AliPay { public void pay(String operation) { System.out.println("进行AliPay支付,操作:" + operation); } }
可以看到,在这里我们不再实现Pay接口了。
接下来我们需要引入一个依赖。在pom.xml文件中增加如下代码。不使用该包下的,使用org.springframework.cglib.proxy下的MethodInterceptor 类也是可以的。
代码清单2-26:pom.xml文件增加如下代码
<dependencies> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.1</version> </dependency> </dependencies>
接下来就是直接写CGLIB的代理类。
更多内容请阅读原文:
https://chenhx.blog.csdn.net/article/details/108027551

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
一文读懂jar包的小秘密
简介 java程序员每天不是在创建jar包就是在创建jar包的路上,并且各种依赖引用都是以jar包的形式展示的。但是随着现代IDE的出现,我想很多程序员已经基本上很少直接和jar包打交道了。 换句话说,他们已经不认识jar包了。 那么jar包到底是什么呢?它有哪些小秘密呢?一起来看一下吧。 jar包到底是什么 jar包其实是一种zip格式的文件,所以说你实际上是可以使用zip相关的命令来对jar包进行创建或者解压缩操作。 不同的是jar包中多了一个META-INF文件夹。通过这个文件夹,jar包可以执行更多的操作。 JDK也自带了一个jar命令,通过jar命令我们可以实现创建,更新jar包的操作,下图是JDK8中jar命令的说明: 因为JDK9之后引入了模块化的概念,所以JDK9之后jar命令有了比较大的变化: 我们看一下JDK14中的jar命令的用法: 这里主要不是讲jar命令,所以我们不具体展开。 META-INF目录 jar包和zip包最大的区别就在于jar包中包含了META-INF目录(不是必须的),我们看一个比较常用的lombok.jar包的结构是怎么样的: 这个版本比较新,...
- 下一篇
一篇文章教会你用Python多线程获取小米应用商店App
【一、项目背景】 小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个的搜索太麻烦了。而已速度不是很快。 今天用多线程爬取小米应用商店的游戏模块。快速获取。 【二、项目目标】 目标 :应用分类 - 聊天社交 应用名称, 应用链接,显示在控制台供用户下载。 【三、涉及的库和网站】 1、网址:百度搜 - 小米应用商店,进入官网。 2、涉及的库:requests、threading 、queue 、json、time 3、软件:PyCharm 【四、项目分析】 1、确认是否为动态加载。 通过页面局部刷新, 右键查看网页源代码,搜索关键字未搜到 。断定此网站为动态加载网站,需要抓取网络数据包分析。 2、使用chrome浏览器,F12抓取网络数据包。 1)抓取返回json数据的URL地址(Headers中的Request URL)。 http://app.mi.com/categotyAllListApi?page={}&categoryId=2&pageSize=30 2)查看并分析查询参数(headers中的Query String Paramete...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群