spring boot配置dubbo(properties)
生活随笔
收集整理的這篇文章主要介紹了
spring boot配置dubbo(properties)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
spring boot與dubbo配置(properties)
dubbo和zookeeper配合使用,具體的它們之間的配置這里不說了。
一、spring boot與dubbo配置有兩種方式:
1)spring boot在自己的配置文件application.properties 配置dubbo。(本篇主要說這個)
2)spring boot結合傳統spring dubbo配置文件xml形式。(請看下一篇文章)
二、本篇主要說在自己配置文件里配置dubbo的步驟:
1)dubbo接口發布者配置
1.首先需要引入如下依賴:
<!-- Spring Boot Dubbo 依賴--> <dependency><groupId>io.dubbo.springboot</groupId><artifactId>spring-boot-starter-dubbo</artifactId><version>1.0.0</version> </dependency>2.在application.properties 文件里配置如下內容:
#dubbo提供者的別名,只是個標識 spring.dubbo.application.name=provider(一般寫自己的項目名稱) #zk地址 spring.dubbo.registry.address=zookeeper://192.168.1.160:2181 #dubbo協議 spring.dubbo.protocol.name=dubbo #duboo端口號 spring.dubbo.protocol.port=20880 #這是你要發布到dubbo的接口所在包位置 spring.dubbo.scan=test.spring.dubboService3.創建一個要發布的dubbo接口和其實現類,具體如下:
package test.spring.dubboService; public interface TestDubboService {public String getName(String name); } package test.spring.dubboService.impl;import com.alibaba.dubbo.config.annotation.Service; import test.spring.dubboService.TestDubboService;@Service public class TestDubboServiceImpl implements TestDubboService {@Overridepublic String getName(String name) {// TODO Auto-generated method stubreturn "姓名:"+name;} }接口上什么都不加,但是其實現類上要加上一個注解@Service 注意該注解是com.alibaba.dubbo.config.annotation.Service 如果引入錯誤,發布也不會成功的。
4.如果發布的接口需要加入版本號,就可以寫為這樣@Service(version="1.0.0.1")
具體的包位置接口請看下圖:
我在前幾篇里說過,spring boot默認掃描是從啟動類開始依次向下級包掃描,如果被調用方在調用的時候還沒有初始化,就肯定會找不到的,上圖的接口為什么會放在實現類的上層,應該就能理解了吧。
到此配置dubbo的發布方就完成了,直接運行啟動類,查看dubbo接口的發布情況。如下:
2)dubbo接口消費者配置
1、首先依然要引入spring boot的依賴:
<!-- Spring Boot Dubbo 依賴--> <dependency><groupId>io.dubbo.springboot</groupId><artifactId>spring-boot-starter-dubbo</artifactId><version>1.0.0</version> </dependency>2.在application.properties 文件里填些dubbo的配置:
spring.dubbo.application.name=consumer-1(一般寫自己的項目名稱) #zk地址 spring.dubbo.registry.address=zookeeper://192.168.1.160:2181 #dubbo協議 spring.dubbo.protocol.name=dubbo #duboo端口號 spring.dubbo.protocol.port=20880 #這是要掃描使用的dubbo接口所在包位置 spring.dubbo.scan=test.spring.dubboService3.由于消費者和發布者不在同一項目里,上邊的test.spring.dubboService 包里,已發布接口TestDubboService 也需要復制一份到消費者這邊,并且包結構都必須與發布的一樣。
??注意上邊,這里我說的復制,具體在項目開發里不會這么干的,比如我們是這樣來做的。
??我們是項目里建了三個項目(springboot-facade、springboot-rest、springboot-service),springboot-facade里放了接口的結構,即service和bean,springboot-rest項目和springboot-service項目分別引用springboot-facade項目,將來就算別人來調用我們的接口,只要引入一下springboot-facade包,配置一下dubbo,就可以了。
當然就算webservice那種遠程調用,也是需要通過wsdl去生成service結構在消費者這邊。
關于單項目需要拷貝的話,具體請看下圖,主要是提示一下,復制的接口在項目所處的路徑必須要與發布的路徑相同:
4.最后在調用的地方,我是在TestController 引入的接口,在引入的地方需要加一個注解,該注解為alibaba的 @Reference ,同理如果想加入版本號,則加上version即可,值要與發布接口的版本號對應。例如:@Reference(version="1.0.0.1"),具體如下:
package test.spring.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import com.alibaba.dubbo.config.annotation.Reference; import test.spring.dubboService.TestDubboService;@RestController @RequestMapping("/springboot") public class TestController {@ReferenceTestDubboService testDubboService;@RequestMapping(value="abc/akf",method=RequestMethod.GET)public String abc(String name){ return testDubboService.getName(name);} }5.依次啟動dubbo發布方項目和調用方項目。訪問以上controller,如果這么運行下來,不出意外的話,就會報空指針異常,發布的這個接口在調用方調不到,修改如下即可。
修改后的項目結構,如下:
也就是說,需要把controller的位置放到dubboService下一級,這里就算你在引入的地方加上@Lazy 延遲加載注解也調用不到,我反正都是調整包結構解決的空指針異常。
6.再次啟動項目,訪問controller,就會訪問成功的:
下一篇 寫spring boot與傳統的dubbo xml配置方式
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的spring boot配置dubbo(properties)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++17(23)-typedef
- 下一篇: mysql中数据类型的长度