RPC 动态代理
《白话动态代理》
在RPC和动态代理中 经常用到反射,反射就相当于解剖,根据一些jdk提供的方法,类里面的方法,成员变量,构造函数,继承的接口或者类 都可以拿到。
反射方式总结:
1、Class c1 = Class.forName(“Employee”)
2、Class c2 = Employee.class
3、Employee e = new Employee()
Class c3 = e.getClass()
在rpc框架源码中经常用到,根据客户端的请求 :接口名称(interface)、方法名称(method)、参数类型(paramtype)、参数(params),进行反射,demo代码如下:
String className = request.getClassName();
Class<?> c = Class.forName(“className”);
Object serviceBean = c.newInstance();
String methodName = request.getMethodName();
Class<?> paramTypes = request.getParamTypes();
Object[] params = request.getParams();
Method method = c.getMethod(methodName, paramTypes);
method.invoke(serviceBean , params);