谈谈java的代理模式认识 三————CGLIB代理
来源:互联网 发布:企业免费记账软件 编辑:程序博客网 时间:2024/06/06 02:00
接着上篇博客的代理模式,我们继续,上篇博客介绍了JDK的动态代理,但是JDK的动态代理机制只能代理实现了接口的类,而不能实现接口的类就不能实现JDK的动态代理,这样就存在一定的局限性。对于这种情况,我们采用CGLIB来实现。
一、CGLIB动态代理
cglib是针对类来实现代理的,其实现原理:CGLIB的底层采用ASM字节码生成框架,使用字节码技术生成代理,比使用反射生成代理的效果要高,是对指定的目标类生成一个子类,并覆盖其中方法实现增强。但是也有一点点不足,因为采用的是继承,所以不能对final修饰的类进行代理。
还是使用以前的代码,依然还是简单的三步来实现。第一:建立一个普普通通的业务类;第二:写CGLIB代理类;第三:写测试代码或者客户端调用。这里的不同是第一步中,我们不需要在建接口了,只是一个普普通通的java类。
看代码:
然后,我们来写CGLIB代理类:
最后写测试类调用
使用CGLIB,需要实现 CGLib 给我们提供的 MethodInterceptor 实现类,并填充 intercept() 方法。方法中最后一个 MethodProxy 类型的参数 proxy,值得注意!CGLib 给我们提供的是方法级别的代理,也可以理解为对方法的拦截。我们直接调用 proxy 的 invokeSuper() 方法,将被代理的对象 obj 以及方法参数 args 传入其中即可。
至此,CGLIB代理也实现了。
阅读全文
0 0
- 谈谈java的代理模式认识 三————CGLIB代理
- 谈谈java的代理模式认识 三————CGLIB代理
- 谈谈JAVA的代理模式认识 一——为什么使用代理模式
- 谈谈JAVA的代理模式认识 一——为什么使用代理模式
- 谈谈JAVA的代理模式认识 一——为什么使用代理模式
- 谈谈java代理模式的认识二——动态代理(JDK)
- 谈谈java代理模式的认识二——动态代理(JDK)
- 代理模式——静态代理、动态代理、cglib代理
- 代理模式之动态代理的实现——CGLib
- JAVA的代理模式认识 一——为什么使用代理模式
- java 代理模式 CGLIB的动态代理
- Java动态代理机制——Cglib
- Java动态代理二——CGLIB动态代理应用
- Java动态代理二——CGLIB动态代理应用
- Java动态代理二——CGLIB动态代理应用
- Java动态代理二——CGLIB动态代理应用
- Java动态代理二——CGLIB动态代理应用
- Java动态代理二——CGLIB动态代理应用
- php实现上传图片到数据库
- iOS开发--字典(NSDictionary)和JSON字符串(NSString)之间互转
- 交叉熵—代价函数
- 数据结构-查找-分块查找(1)算法简介
- Node.js调用cmd输出中文乱码
- 谈谈java的代理模式认识 三————CGLIB代理
- C语言堆栈之顺序栈
- Python-matplotlib学习
- python中特殊整数(交互式中)
- iOS编程修改系统音量
- WebSocket
- RDD实现详解
- 浏览器兼容性测试工具Browser Sandbox
- 找出最长的一个单词