关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

对于dubbo,有生产者和消费者两端。对于生产者端的配置,按照github上springBoot的官方案例,是把要暴露service接口和service实现都放在同一个包下。如图:

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

同时扫描配置也是只扫描这个包就行了。

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

消费者端是这样,也是要创建service的接口,同时调用service接口的service实例也是放在同一个包下。

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

同时消费者端的扫描配置是这样:

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

但是我觉得这样太麻烦了,生产者端和消费者端要写两份接口,如果你不止这一个项目,还有另一个项目也要RPC调用,另一个项目又要写,这样会越写越多,加上之前搭这种springBoot项目应该把公共的接口抽离出来,不用写多份,同时也便于其他项目进行调用。就像这样:

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。把接口单独放进一个maven项目里。

一开始我生产者端结构不变,只把消费者端接口抽取出来的时候,发现,无论怎么配置扫描的包,配置成接口所在的包,还是调用接口的类所在的包都无法,都无法注入这个生产者,报的是空指针异常,说明这个消费者压根就没找到这个生产者。网上找了挺多资料,折腾了挺久,都没有什么解决方案,后面打开dubbo -admin 看看,发现:

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

发现竟然没有提供者,一瞬间有点懂了,应该dubbo不是根据名字去找生产者的,似乎是根据前面的包名+接口名字去找对应的生产者(具体实现原理暂时没有这么高的水平去研究)。原来如此,那我直接将生成者和消费者一起提取出来不就ok? 这也是最终目的,原来可以一步到达,我自己非要分开走,于是乎提取出来,程序就通了。

关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

不过也明白了扫描配置那里关于springBoot整合dubbo时,扫描配置 service的接口和service的实现类不在同一个包下的问题。

生产者端应该是接口实现类所在的包,消费者端应该是调用接口的类所在的包。(不是接口所在的包)。

记录下!!!!