apache / apache/dubbo

dubbo中consumer里收到provider调用时传入的方法名这些数据后的反射调用,可以改成其它方式吗?

Open
#6,764 7 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.