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);

posted @ 2021-12-22 19:58  yydssc  阅读(177)  评论(0)    收藏  举报