springboot+dubbo配置走过的坑

来源:互联网 发布:鲍尔州立大学 知乎 编辑:程序博客网 时间:2024/06/07 06:38

12月4号:

接收一个springboot项目,需要加上我们的dubbo服务接口(消费者):

起初在网上找到的配置(如下):

spring:    dubbo :          application :               name : hello-world-app        registry :              address : zookeeper://127.0.0.1:2181          scan: com.ibigsea.dubbo_provider.impl

但我们的zk是多个地址,所以我把 address: zookeeper://192.168.1.236:3181,192.168.1.237:3181,192.168.1.237:3182,这样的做法是错误的,

运行会报:java.exception.Number**的错,这个就不截图了,有兴趣可以试试。

        正确的zk多个地址配置如下(记得把开头spring加上,我懒就不加了):

dubbo:        application:            name: qb-api-manager            registries[0]:                address: zookeeper://192.168.1.236:3181            registries[1]:                address: zookeeper://192.168.1.237:3181            registries[2]:                address: zookeeper://192.168.1.237:3182        scan: com.qb.api.manager.modules.web.service

        加载正确的日志如下,可以看见dubbo加载(红框部分):



看日志很重要,红框部分在说明加载成功,另外我想说一下scan(scanner扫描)属性,网上好多人说scan指的是扫描dubbo接口所在的package,经测试这是错误的,如下图(zk加载日志没有出现),而且程序运行接口对象为null,所以scan接口为:dubbo接口对象所在类的package。



举个例子:接口A在com.vc.strong包下,你的功能cn.test.B类用了dubbo映射的A接口对象,那么你的scan应该配置成cn.test,而不是com.vc.strong;配置对了日志就是对的,配置错了日志中zkclient就不会出现。

另外还有其他网友说的调整接口引用类的位置(Controller和Service的位置),因为运行后接口对象为null,这个问题的根本是scan写错了,所以只需写对scan。


还有配置完全正确但是接口对象仍然为null的问题,Application不要集成任何类,只使用@SpringBootApplication即可。如下图:



最后如果不知道写配置,请在IDE中手动打开DubboProperties类,查看源码:






原创粉丝点击