12月4号:
一、增加dubbo配置
接收一个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加载(红框部分说明加载dubbo成功):
二、使用中scan扫描注入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类,查看源码: