场景:
当我们执行远程服务调用时,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub,然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。
开发步骤:
1,在我们的dubbo-interface,开发服务对应的本地存根
/**
* @author huangguizhao
*/
public class UserServiceStub implements IUserService {
private final IUserService userService;
//构造函数传入真正的远程代理对象
public UserServiceStub(IUserService userService){
this.userService = userService;
}
@Override
public String hello(String name) {
if(name == null || "".equals(name)){
return "validate param";
}
return userService.hello(name);
}
}
2,在dubbo-consumer,服务引用中,设置存根
@Reference(