springboot+dubbo配置走過的坑
阿新 • • 發佈:2019-02-11
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
另外還有其他網友說的調整介面引用類的位置(Controller和Service的位置),因為執行後接口物件為null,這個問題的根本是scan寫錯了,所以只需寫對scan。
還有配置完全正確但是介面物件仍然為null的問題,Application不要整合任何類,只使用@SpringBootApplication即可。如下圖:
最後如果不知道寫配置,請在IDE中手動開啟DubboProperties類,檢視原始碼: