springboot集成dubbo注解版的示例代碼
工作中用springboot搭建項目,用dubbo做遠程調(diào)用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。
本文假定你已經(jīng)有springboot和dubbo的使用經(jīng)驗。
dubbo簡介
dubbo是阿里巴巴開源的分布式服務(wù)框架,一般使用dubbo的RPC調(diào)用。但2016年停止維護,現(xiàn)在使用的2.8.4版本其實是當當維護的dubbox。2017年8月阿里又重啟維護dubbo,并從2.5.7版本開始支持注解配置。
準備
此示例使用gradle構(gòu)建,關(guān)于gradle的安裝配置,請參考官方文檔。
zookeeper作為dubbo服務(wù)發(fā)現(xiàn)的基礎(chǔ)組件,關(guān)于zookeeper的安裝啟動,請參考官方文檔。
項目結(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.消費者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)者實現(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.消費者調(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();
}
}
啟動
- 本地啟動zookeeper
- 依次啟動springboot-dubbo-provider,springboot-dubbo-consumer
- 瀏覽器訪問 localhost:8080/hello
- 看到返回'Hello Springboot Dubbo' 即表示調(diào)用成功
其他
示例源碼(Github)
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
springboot2.0如何通過fastdfs實現(xiàn)文件分布式上傳
這篇文章主要介紹了springboot2.0如何通過fastdfs實現(xiàn)文件分布式上傳,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
SpringBoot對Druid配置SQL監(jiān)控功能失效問題及解決方法
這篇文章主要介紹了SpringBoot對Druid配置SQL監(jiān)控功能失效問題的解決方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-05-05
java將一個整數(shù)轉(zhuǎn)化成二進制代碼示例
這篇文章主要介紹了java將一個整數(shù)轉(zhuǎn)化成二進制代碼示例,具有一定借鑒價值,需要的朋友可以參考下2017-12-12
Java異常處理運行時異常(RuntimeException)詳解及實例
這篇文章主要介紹了 Java異常處理運行時異常(RuntimeException)詳解及實例的相關(guān)資料,需要的朋友可以參考下http://time.qq.com/?pgv_ref=aiotime2017-05-05

