微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐