【Mrpc】Demo4 客户端动态代理的创建
来源:互联网 发布:caffe 图片预处理 编辑:程序博客网 时间:2024/05/29 18:09
本来第4个demo应该是Spring框架获取自定义注解的类的实例对象列表。但是这篇文章已经写过,不再赘述,可以参考http://blog.csdn.net/mrbcy/article/details/54839463
因为接口的实现是在服务端的,因此客户端没有办法直接拿到一个实现类的对象的,因此必须由框架提供一个动态代理。这个动态代理截获客户的调用请求,然后向服务器发起调用,最后将服务器的响应发回给客户代码。代码已经上传到http://download.csdn.net/detail/mrbcy/9748050
来看一下关键的代码:
package tech.mrbcy.mrpc.demo.demo4;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class RpcProxy { @SuppressWarnings("unchecked") public<T> T createProxy(Class<T> interfaceClass){ return (T) Proxy.newProxyInstance(interfaceClass.getClassLoader(), new Class<?>[]{interfaceClass}, new InvocationHandler() { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("方法已调用:" + method); // 下面可以连接服务器,发送调用请求,然后返回服务器的结果了 return null; } }); }}
总体来讲,代码很简单就是创建了一个动态代理对象。但是有一点需要指出。
Proxy.newProxyInstance(interfaceClass.getClassLoader(), new Class<?>[]{interfaceClass}, new InvocationHandler() { }
这里的new Class<?>[]{interfaceClass}
不能写成interfaceClass.getInterfaces
,因为调用方代码传入的是interface的Class对象,用它是获取不到自己的。
到现在,整个项目的第一步算是完成了,下面就是整合这几个Demo变成框架了。
这几天在考科三,不一定什么时候更新了。
0 0
- 【Mrpc】Demo4 客户端动态代理的创建
- 【Mrpc】Demo3 基于netty的服务器和客户端。
- Thrift动态代理客户端
- 动态代理类的创建实例
- 创建动态代理的三种方法
- java动态代理对象实例的创建
- 创建动态代理服务
- 创建动态代理服务
- 创建动态代理
- Java动态代理类(包括客户端服务端使用反射机制来代理的)
- demo4.c(求100以内的素数)
- Demo4 告别Toast:精致的Snackbar
- 23 服务音乐的启动Demo4
- java创建动态代理类
- 使用Cglib创建动态代理
- <JAVA>通过JDK创建动态代理的理解
- 【Mrpc】 Demo1 对象与byte[]的相互转换
- 【Mrpc】Demo2 基于Zookeeper的服务器感知及负载均衡
- Linux——CentOS7firewalld取代iptales
- ES6语法中的let
- java定时任务方式详解
- hive1.2.1安装
- SqlServer加序号
- 【Mrpc】Demo4 客户端动态代理的创建
- 通过IDOC实现EDI与SAP集成(一)
- C# 解析Xml文件
- Jmeter测试(一)——测试环境搭建
- 在Oracle中执行动态SQL的几种方法
- 【设计模式】【二】单例模式的七种写法
- java class文件准确的反编译思路
- 关于document.body、document.documentElement、window.pageYoffset
- Python学习笔记(一)