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)文章
eclipse創(chuàng)建項目沒有dynamic web的解決方法
最近上課要用到eclipse,要用到Dynamic web project.但是我下載的版本上沒有.接下來就帶大家了解 eclipse創(chuàng)建項目沒有dynamic web的解決方法,文中有非常詳細的圖文示例,需要的朋友可以參考下2021-06-06
JVM?運行時數(shù)據(jù)區(qū)與JMM?內(nèi)存模型
這篇文章主要介紹了JVM?運行時數(shù)據(jù)區(qū)與JMM?內(nèi)存模型,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值。需要的朋友可以參考一下2022-07-07

