我们每次去发布一个服务,必然会先定义一个接口,并且把这个接口放在一个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 举报,一经查实,本站将立刻删除。