dubbo中consumer里收到provider调用时传入的方法名这些数据后的反射调用,可以改成其它方式吗?
- Dominant language
- Java
- Stars
- 41.6k
- Forks
- 26.4k
- Avg merge
- 15h 13m
- Merged PRs (30d)
- 4
Description
在学习dubbo时,说consumer端是通过反射调用的provider调用的方法。
由于从刚开始接触Java就听说反射太慢,所以就在想为什么dubbo要反射调用某个方法呢?
我们可不可以通过在每台服务里注册要提供的服务,当consumer接收到调用请求后,直接通过接收 的方法名、类名、参数等找到那个服务,然后直接调用就可以了?
**伪代码如下**:
```
public Object handle(String methodName,String className,Object[] args){
// 通过类名找到服务对象
Service service = getServiceByClassName(className);
/**
* 根据方法名去调用不同的方法
* 下面可以写成通用的,比如像动态代理的真实代理类那样
* 当然,要调用某个方法具体是不是只以参数名判断是不对的
*/
if("getUserById".equals(methodName)){
return service.getUserById("参数");
}
if("addUser".equals(methodName)){
return service.addUser("参数");
}
}
```
可能是我知识太浅,说了一段废话
Contributor guide
Assessment
This issue has not been assessed yet.