原因如下
1:@Reference注入的时候导错了包,一定要导入alibaba的包
import com.alibaba.dubbo.config.annotation.Reference;
2:@Service远程调用的时候导错了包,也要使用alibaba的包
import com.alibaba.dubbo.config.annotation.Service;
同时@Service后还要指定service层对应的接口包
@Service(interfaceClass = CheckItemService.class)
3:Service调用Dao层的时候配置出现了错误,由于是接口映射,在配置文件中,配置文件名要对应Dao层接口的名字,同时存放的位置也要在接口文件所在目录,Resource中的话需要创建同级目录存放;
<mapper namespace="com.ithu.dao.CheckItemDao">
方法名要对应mapper文件中id的名字;这里如果导包失败整个Service都无法启用所以出现null报空指针;
4:配置bubbo的时候,扫包出现了错误,扫描不到需要的包
服务消费者扫包配置:
<!-- 指定应用名称 -->
<dubbo:application name="health_backend" />
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--批量扫描-->
<dubbo:annotation package="com.ithu.controller" />
服务生产者扫包配置:
<dubbo:application name="health_service_provider"/>
<!--指定暴露服务的端口,如果不指定默认为20880-->
<dubbo:protocol name="dubbo" port="20887"/>
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--批量扫描,发布服务-->
<dubbo:annotation package="com.ithu.service"/>
5:dubbo的配置文件中使用了linux的缓存存放地址,需要改成对应的,测试时使用pc端地址; 找到zookeeper的目录conf下的配置文件zoo.cfg
dataDir=D:/apache-zookeeper-3.5.6-bin/data
修改为pc本地目录