工作中用 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的安装启动,请参考 官方文档 。
项目结构如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
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 |
引入外部依赖
1 2 3 4 |
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配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
@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配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
@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.定义接口
1 2 3 |
public interface demoservice { string sayhello(); } |
4.生产者实现接口
1 2 3 4 5 6 7 8 9 10 11 |
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.消费者调用接口
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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' 即表示调用成功其他
示例源码( github )
dubbo注解配置
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:http://HdhCmsTestspring4all测试数据/article/1587
查看更多关于springboot集成dubbo注解版的示例代码的详细内容...