springboot集成dubbo注解版的示例代碼
工作中用springboot搭建項(xiàng)目,用dubbo做遠(yuǎn)程調(diào)用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。
本文假定你已經(jīng)有springboot和dubbo的使用經(jīng)驗(yàn)。
dubbo簡(jiǎn)介
dubbo是阿里巴巴開(kāi)源的分布式服務(wù)框架,一般使用dubbo的RPC調(diào)用。但2016年停止維護(hù),現(xiàn)在使用的2.8.4版本其實(shí)是當(dāng)當(dāng)維護(hù)的dubbox。2017年8月阿里又重啟維護(hù)dubbo,并從2.5.7版本開(kāi)始支持注解配置。
準(zhǔn)備
此示例使用gradle構(gòu)建,關(guān)于gradle的安裝配置,請(qǐng)參考官方文檔。
zookeeper作為dubbo服務(wù)發(fā)現(xiàn)的基礎(chǔ)組件,關(guān)于zookeeper的安裝啟動(dòng),請(qǐng)參考官方文檔。
項(xiàng)目結(jié)構(gòu)如下
springboot-dubbo ├─settings.gradle ├─build.gradle ├─springboot-dubbo-api │ │─build.gradle │ └─src │ └─main │ └─java │ └─org │ └─aaron │ └─springboot │ └─dubbo │ └─api │ DemoService.java ├─springboot-dubbo-consumer │ │─build.gradle │ └─src │ └─main │ ├─java │ │ └─org │ │ └─aaron │ │ └─springboot │ │ └─dubbo │ │ └─consumer │ │ DemoController.java │ │ DubboConfiguration.java │ │ DubboConsumerApplication.java │ │ │ └─resources │ application.yml └─springboot-dubbo-provider │─build.gradle └─src └─main ├─java │ └─org │ └─aaron │ └─springboot │ └─dubbo │ └─provider │ DemoServiceImpl.java │ DubboConfiguration.java │ DubboProviderApplication.java │ └─resources application.yml
引入外部依賴
compile('com.alibaba:dubbo:2.6.3') compile('org.apache.zookeeper:zookeeper:3.4.9') compile('org.apache.curator:curator-framework:4.0.0') compile('org.springframework.boot:spring-boot-starter-web')
配置
1.生產(chǎn)者dubbo配置
@Configuration public class DubboConfiguration { @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://127.0.0.1:2181"); registryConfig.setClient("curator"); return registryConfig; } @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("sprintboot-dubbo-provider"); return applicationConfig; } @Bean public ProtocolConfig protocolConfig() { ProtocolConfig protocolConfig = new ProtocolConfig(); protocolConfig.setPort(12021); protocolConfig.setName("dubbo"); return protocolConfig; } }
2.消費(fèi)者dubbo配置
@Configuration public class DubboConfiguration { @Bean public RegistryConfig registryConfig() { RegistryConfig registryConfig = new RegistryConfig(); registryConfig.setAddress("zookeeper://127.0.0.1:2181"); registryConfig.setClient("curator"); return registryConfig; } @Bean public ApplicationConfig applicationConfig() { ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setName("sprintboot-dubbo-consumber"); return applicationConfig; } @Bean public ConsumerConfig consumerConfig() { ConsumerConfig consumerConfig = new ConsumerConfig(); consumerConfig.setTimeout(3000); return consumerConfig; } }
3.定義接口
public interface DemoService { String sayHello(); }
4.生產(chǎn)者實(shí)現(xiàn)接口
import com.alibaba.dubbo.config.annotation.Service; @Component @Service(interfaceClass = DemoService.class, version = "1.0") public class DemoServiceImpl implements DemoService { @Override public String sayHello() { return "Hello Springboot Dubbo"; } }
5.消費(fèi)者調(diào)用接口
import com.alibaba.dubbo.config.annotation.Reference; @RestController public class DemoController { @Reference(interfaceClass = DemoService.class, version = "1.0") private DemoService demoService; @RequestMapping("/hello") public String sayHello() { return demoService.sayHello(); } }
啟動(dòng)
- 本地啟動(dòng)zookeeper
- 依次啟動(dòng)springboot-dubbo-provider,springboot-dubbo-consumer
- 瀏覽器訪問(wèn) localhost:8080/hello
- 看到返回'Hello Springboot Dubbo' 即表示調(diào)用成功
其他
示例源碼(Github)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
圖文詳解JAVA實(shí)現(xiàn)哈夫曼樹(shù)
所謂哈夫曼樹(shù)就是要求最小加權(quán)路徑長(zhǎng)度,這是什么意思呢?簡(jiǎn)而言之,就是要所有的節(jié)點(diǎn)對(duì)應(yīng)的路徑長(zhǎng)度(高度-1)乘以該節(jié)點(diǎn)的權(quán)值,然后保證這些結(jié)果之和最小。下面這篇文章就給大家詳細(xì)介紹2016-08-08eclipse創(chuàng)建項(xiàng)目沒(méi)有dynamic web的解決方法
最近上課要用到eclipse,要用到Dynamic web project.但是我下載的版本上沒(méi)有.接下來(lái)就帶大家了解 eclipse創(chuàng)建項(xiàng)目沒(méi)有dynamic web的解決方法,文中有非常詳細(xì)的圖文示例,需要的朋友可以參考下2021-06-06SpringBoot MyBatis簡(jiǎn)單快速入門例子
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。這篇文章主要介紹了SpringBoot MyBatis快速入門-簡(jiǎn)單例子,需要的朋友可以參考下2021-07-07JVM?運(yùn)行時(shí)數(shù)據(jù)區(qū)與JMM?內(nèi)存模型
這篇文章主要介紹了JVM?運(yùn)行時(shí)數(shù)據(jù)區(qū)與JMM?內(nèi)存模型,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值。需要的朋友可以參考一下2022-07-07Spring Boot使用JSR-380進(jìn)行校驗(yàn)的示例
這篇文章主要介紹了Spring Boot使用JSR-380進(jìn)行校驗(yàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Mybatis查詢方法如何實(shí)現(xiàn)沒(méi)有返回值
這篇文章主要介紹了Mybatis查詢方法如何實(shí)現(xiàn)沒(méi)有返回值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10java實(shí)現(xiàn)圖片上傳至本地實(shí)例詳解
我們給大家分享了關(guān)于java實(shí)現(xiàn)圖片上傳至本地的實(shí)例以及相關(guān)代碼,有需要的朋友參考下。2018-08-08