Dubbo泛化

我们每次去发布一个服务,必然会先定义一个接口,并且把这个接口放在一个api的jar包中,给到服务调用方来使用。本质上,对于开发者来说仍然是面向接口编程,而且对于使用者来说,可以不需要关心甚至不需要知道这个接口到底是怎么触发调用的。简而言之,泛化调用,最最直接的表现就是服务消费者不需要有任何接口的实现,就能完成服务的调用

代码实例:

  • provider

在服务端定义了一个接口

@dubboService(protocol = {"dubbo"})
public class DemoService implements IDemoService{

    @Override
    public String getTxt() {
        return "Hello World!!!";
    }
}

注册到nacos的url列表

side=provider

methods=getTxt

release=2.7.7

deprecated=false

dubbo=2.0.2

pid=10884

interface=com.springboot.dubbo.provider.services.IDemoService

generic=false

path=com.springboot.dubbo.provider.services.IDemoService

protocol=dubbo

application=spring-boot-dubbo-sample-provider

dynamic=true

category=providers

anyhost=true

timestamp=1608312655153
  • consumer
@RestController
public class DemoController {
    // 设置generic=true代表开启泛化功能
    @dubboReference(interfaceName = "com.springboot.dubbo.provider.services.IDemoService",generic = true,check = false)
    GenericService genericService;

    @GetMapping("/demo")
    public String demo(){
        //对象的传值
        Map<String,Object> user=new HashMap<>();
        user.put("",""); //key表达user对象中的属性,value表达属性的值
        return genericService.$invoke("getTxt",new String[0],null).toString();
    }
}

相关文章

在网络请求时,总会有各种异常情况出现,我们需要提前处理这...
作者:宇曾背景软件技术的发展历史,从单体的应用,逐渐演进...
hello,大家好呀,我是小楼。最近一个技术群有同学at我,问我...
 一个软件开发人员,工作到了一定的年限(一般是3、4年左右...
当一个服务调用另一个远程服务出现错误时的外观Dubbo提供了多...
最近在看阿里开源RPC框架Dubbo的源码,顺带梳理了一下其中用...