dubbo分为服务提供端和消费端,当服务提供端暴露出接口时(@service注解)
消费端通过控制层(@Reference)获取到服务端暴露的接口
但是如果消费端通过再消费端的模块里,通过业务层service层,创建一个方法,并对服务端提供的接口进行调用,再通过控制层创建方法调用自己模块的业务层就会出现绑定错误的问题
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.demo2.service.CmDataService.getdata
出现问题的原因:当在模块中通过dubbo的rpc来调用其他服务的方法时,不能使用mybatisplus的条件构造器wrapper来进行方法调用。因为wrapper中包含有泛型 Wrapper<T> ,会导致rpc解析失败,从而导致调用失败。
所以我们不要再service层多此一举,直接在控制层调用远程服务即可。
pom部分相关依赖:
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
消费端部分配置文件application.yml
dubbo:
application:
name: springboot-dubbo-demo2 #应用名
registry:
address: zookeeper://localhost #zookeeper地址
port: 2181 #提供注册的端口
protocol: registry
dubbo版本:2.6.2
jdk:1.8
注册中心:zookeeper