springboot集成dubbo注解版的示例代码
工作中用springboot搭建项目,用dubbo做远程调用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。
本文假定你已经有springboot和dubbo的使用经验。
dubbo简介
dubbo是阿里巴巴开源的分布式服务框架,一般使用dubbo的RPC调用。但2016年停止维护,现在使用的2.8.4版本其实是当当维护的dubbox。2017年8月阿里又重启维护dubbo,并从2.5.7版本开始支持注解配置。
准备
此示例使用gradle构建,关于gradle的安装配置,请参考官方文档。
zookeeper作为dubbo服务发现的基础组件,关于zookeeper的安装启动,请参考官方文档。
项目结构如下
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.生产者dubbo配置
@Configuration
publicclassDubboConfiguration{
@Bean
publicRegistryConfigregistryConfig(){
RegistryConfigregistryConfig=newRegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1:2181");
registryConfig.setClient("curator");
returnregistryConfig;
}
@Bean
publicApplicationConfigapplicationConfig(){
ApplicationConfigapplicationConfig=newApplicationConfig();
applicationConfig.setName("sprintboot-dubbo-provider");
returnapplicationConfig;
}
@Bean
publicProtocolConfigprotocolConfig(){
ProtocolConfigprotocolConfig=newProtocolConfig();
protocolConfig.setPort(12021);
protocolConfig.setName("dubbo");
returnprotocolConfig;
}
}
2.消费者dubbo配置
@Configuration
publicclassDubboConfiguration{
@Bean
publicRegistryConfigregistryConfig(){
RegistryConfigregistryConfig=newRegistryConfig();
registryConfig.setAddress("zookeeper://127.0.0.1:2181");
registryConfig.setClient("curator");
returnregistryConfig;
}
@Bean
publicApplicationConfigapplicationConfig(){
ApplicationConfigapplicationConfig=newApplicationConfig();
applicationConfig.setName("sprintboot-dubbo-consumber");
returnapplicationConfig;
}
@Bean
publicConsumerConfigconsumerConfig(){
ConsumerConfigconsumerConfig=newConsumerConfig();
consumerConfig.setTimeout(3000);
returnconsumerConfig;
}
}
3.定义接口
publicinterfaceDemoService{
StringsayHello();
}
4.生产者实现接口
importcom.alibaba.dubbo.config.annotation.Service;
@Component
@Service(interfaceClass=DemoService.class,version="1.0")
publicclassDemoServiceImplimplementsDemoService{
@Override
publicStringsayHello(){
return"HelloSpringbootDubbo";
}
}
5.消费者调用接口
importcom.alibaba.dubbo.config.annotation.Reference;
@RestController
publicclassDemoController{
@Reference(interfaceClass=DemoService.class,version="1.0")
privateDemoServicedemoService;
@RequestMapping("/hello")
publicStringsayHello(){
returndemoService.sayHello();
}
}
启动
- 本地启动zookeeper
- 依次启动springboot-dubbo-provider,springboot-dubbo-consumer
- 浏览器访问localhost:8080/hello
- 看到返回'HelloSpringbootDubbo'即表示调用成功
其他
示例源码(Github)
Dubbo注解配置
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。