springboot+dubbo配置走过的坑

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成功):

 

springboot+dubbo配置走过的坑_第1张图片

 

二、使用中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即可。如下图:

springboot+dubbo配置走过的坑_第2张图片

springboot+dubbo配置走过的坑_第3张图片

 

 

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

springboot+dubbo配置走过的坑_第4张图片

 

 

 

 

 

你可能感兴趣的:(Java,web)