1. 程式人生 > >springboot+dubbo配置走過的坑

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

二、使用中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類,檢視原始碼: