今天做SpringBoot整合dubbo多次遇到了启动后,程序不正常进行zookeeper注册的情况, 于是在下面总结一下:
首先关于准备工作, 第一步先重新clean/install父类maven并刷新,毕竟就算你代码全部写对了也有很大概率出问题.
情况一:环境问题
包括一下图片的一些jdk版本环境混乱可能导致此问题, 最好使用1.8版本的jdk, 正确环境示例如下:
这种情况的表现特点是消费者与提供者都无法触发注册zookeeper, 执行时有可能报版本异常或者干脆不报异常
情况二:
在service实现类中使用@Service时使用了 @org.springframework.stereotype.Service 而非 @com.alibaba.dubbo.config.annotation.Service
正确情况应该使用后者
这种情况的表现特点是消费者可以正常注册zookeeper而提供者不行,且开启程序时不会报异常,调用消费者接口会报空指针异常.
情况三:
在service层实现类使用了@Repository注解(可能出这个错的人比较少, 但我确实遇到了, 所以就顺便提一嘴以警示自己)
这种情况的表现特点与第二种情况一样
情况四:
在配置application.yml配置文件时没有注意格式或层级问题,导致dubbo的配置在其他配置的层级之下, 而不是再spring的层级之下
这种情况会报出明显的异常提示, 相对会比较好解决