日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring boot配置dubbo注意事项

發布時間:2025/3/12 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring boot配置dubbo注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring boot配置dubbo注意事項

通過前兩篇文章,知道了spring boot配置dubbo有兩種方式。具體請回顧前兩篇文章吧。

現在主要是說下spring boot在自己的application.properties 文件里配置dubbo內容,這種方式遇到的問題。

問題一:dubbo接口發布不成功。

原因一:注意application.properties 文件中配置的,dubbo掃描發布接口包是否正確,即:

#這是你要發布到dubbo的接口所在包位置 spring.dubbo.scan=test.spring.dubboService

這里的test.spring.dubboService包下,就是要發布的dubbo接口所放的位置。

原因二:所發布接口的實現類包位置一定要比接口位置低。即正確配置如下圖所示:

原因三:發布接口的實現類上是否忘記添加com.alibaba.dubbo.config.annotation.Service 的@Service 注解。

原因四:發布接口實現類除了有@Service 注解,是否還存在事務注解@Transactional ,原因是alibaba的@Service 注解與事務的注解,不能共用,去掉事務注解即可。(詳情請看下一個問題)。

問題二:dubbo發布的接口不能再添加事務注解@Transactional。

原因:是alibaba的@Service 注解與事務的注解,不能共用

解決方法有三個:

1. 方法一:修改alibaba的@Service 注解,具體辦法請參考這里,這種只是讓大家看下,最好別用,因為誰閑著沒事去修改源代碼。

2. 方法二:可以將dubbo發布接口和添加注解的接口分開,兩者之間有個調用關系即可,詳情請看下圖:

上圖將發布的接口和訪問數據庫的接口分離,即將alibaba的@Service 注解,加到TestDubboServiceImpl 上,然后在該實現類中,再引入TestService 接口,然后進入到TestServiceImpl ,將事務注解添加到TestServiceImpl 類中即可,這樣就解決了,@Service 和@Transactional 的分離。具體如下:

import com.alibaba.dubbo.config.annotation.Service; import test.spring.dubboService.TestDubboService; import test.spring.localService.TestService;@Service public class TestDubboServiceImpl implements TestDubboService {@Autowired //引入本地TestService接口TestService testService;@Overridepublic String getName(String name) {// TODO Auto-generated method stubreturn testService.getName(name);} }

TestService的實現類如下:

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;//這里的注解就是這個 import test.spring.localService.TestService; @Service public class TestServiceImpl implements TestService{@AutowiredTestMapper testMapper;@Override@Transactionalpublic String getName(String name) {//具體的查詢數據庫的邏輯 return testMapper.selectByName(name);;}}

3.方法三:將dubbo的配置由在spring boot 的application.properties文件配置改為傳統的那種dubbo xml形式配置。也不會造成沖突。因為傳統的dubbo xml形式配置,不用alibaba的那個@Service 注解。

問題三:dubbo消費者調用接口不成功

原因一:還是application.properties,是否沒有配置,或配置位置錯誤。

#這是你要調用的dubbo的接口所在包位置 spring.dubbo.scan=test.spring.dubboService

原因二:一般我們的消費者調用都是在controller調用,也就是下圖所示

import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference;@RestController public class TestController {@ReferenceTestDubboService testDubboService;@RequestMapping(value="abc/akf",method=RequestMethod.GET)public String abc(String name){ return testDubboService.getName(name);} }

這種情況就要考慮是否controller位置比dubbo調用接口的位置低。即下圖所示為正確配置:

總結

以上是生活随笔為你收集整理的spring boot配置dubbo注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。