连咸鱼都能学会的Java动态代理
来源:互联网 发布:查日本经济数据的网站 编辑:程序博客网 时间:2024/04/30 04:01
这期我们来讲讲Java的动态代理
首先我们说下代理是怎么一回事,代理简单来说,就是在你肚子饿了,想找吃的时候, 登陆外卖平台,点上一大堆好吃的,然后等着外卖小哥送来。
代理在这个例子里的角色就是外卖平台,他不卖东西, 但是可以让真正卖东西的商家发货,起到代理的作用,能隐藏真正的店家,类似于代购。
现在我们来看看Java 动态代理的2种实现方法:
jdk动态代理和cglib动态代理
1.jdk动态代理:
首先我们来定义itemService 的接口
接下来,我们写一个类来实现这个itemService接口
接下来就是干正事了, 用jdk代理实现,写在个我们自己的拦截类去实现InvocationHandler 接口
好啦, 我们最后写个测试类,试下能不能成功运行这个代理
结果如下:
根据结果,我们可以发现, 在测试类通过代理调用getItemName(123456), getItemSize(123456) 方法的时候,会先跑MyInvocationHandler 类,然后在逻辑里我们对getItemName(xxx) 方法做了些处理,在结果里也能很好表现出来。
注意:用jdk实现代理的类都必须是实现了某些接口的类, 没有实现接口的类是用不了jdk动态代理的。
但是没关系,接下来我们实现类不用实现接口也能实现动态代理:cglib动态代理, 而且他还比用jdk动态代理快。
下面,我们要用cglib来实现动态代理:
同样,我们用回上面已经写好的ItemService接口和 ItemServiceImpl 接口,
与jdk动态代理不同,cglib实现拦截类的接口是MethodInterceptor ,
现在我们开始写自己的实现拦截类:
然后, 我们也写个测试类,看看结果是怎么样的:
结果如下:
这期关于Java 动态反射就简述到这, 相信大家也有了个大概的了解,欢迎大家去进一步研究
参考文档:
http://blog.csdn.net/heyutao007/article/details/49738887
http://blog.csdn.net/lovelion/article/details/8116704
- 连咸鱼都能学会的Java动态代理
- 连咸鱼都能学会的Java反射
- 连咸鱼都能学会的Java多线程实现
- 连咸鱼都能学会的Java多线程同步实现
- 连咸鱼都能学会的Java异步处理
- 连咸鱼都能学会的安装tomcat、修改端口
- 连咸鱼都能学会的Java多线程中的内存模型
- 连咸鱼都能学会的Zookeeper注册中心的搭建
- 连咸鱼都能学会的dubbo-admin管理平台搭建
- 连咸鱼都能学会的Dubbo分布式服务框架入门(附工程)
- MySQL数据库的增删改查--连咸鱼都能学会
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”而不影响tomcat 8.0--连咸鱼都能学会
- MySQL数据库从下载到启动详解--连咸鱼都能学会
- 人人都能学会程序设计9多语境的操作
- java动态代理上是否能再进行一层代理
- toast连view都能打印出来
- Java的动态代理
- JAVA的动态代理
- “The method getDispatcherType() is undefined for the type HttpServletRequest”
- SVN的使用
- windows上使用sourceTree2.0.20.1+P4Merge-Build-2017.2
- ffmpeg一键安装
- Drawer与Toolbar的简单使用
- 连咸鱼都能学会的Java动态代理
- JS 获取当月第一天与最后一天
- URG-PSH
- 解决svn图标不显示的各种问题
- 不同的方式的实现Table不换行省略号显示
- Session hijacking(会话劫持)
- vb.net版机房重构--存储过程的使用
- 数字电路中的时序分析(一)
- TP3.2校验微信公众号、小程序 服务器地址