1.版本兼容问题
如下图所示,其中的 spring-boot-starter-dubbo 是一个比较旧的1.0.0版本,在一开始的时候,spring-boot-starter-parent使用的是默认的2.1.2.RELEASE版本,这个版本导致了和dubbo的不兼容问题。造成的结果就是运行不会报错,但是不会启动ZkClient ,在dubbo控制台也不会找到服务的发布者和消费者。所以spring-boot-starter-parent换成低版本的1.5.1.RELEASE保证了兼容性
2.扫描包(spring.dubbo.scan)的配置问题
如果扫描包路径配置的不对,会造成在启动时找不到类等空指针异常
(ps:建议不要把生产者和消费者的扫描包路径设置成一样的。
开始的时候我将消费者和服务生产者的目录结构设置的完全一样,造成的结果就是这两个扫描包路径是一样的。这会造成导包失败的结果。而且会扫描不到生产者的路径)
服务的消费者的扫描包路径应该配置成消费该服务的类的包名
服务的发布者的扫描包路径应该配置到服务暴露的接口包名,同时,该接口对应的实体类建议也放在这个包的子目录下面
3.打包插件问题
发布服务的生产者建议使用下面的maven插件打包,不然可能会在消费者调用该jar包的时候找不到相应的类,造成导包失败。
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
下面的这个打包插件就会把BOOT-INF类似于这样的安全的文件夹下面,使用jar包import 包 是不会成功的。所以在服务的生产者是不要使用这个maven插件了
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>