经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Spring Boot » 查看文章
springboot集成dubbo注解版的示例代码
来源:jb51  时间:2018/10/20 15:38:42  对本文有异议

工作中用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. springboot-dubbo
  2. ├─settings.gradle
  3. ├─build.gradle
  4. ├─springboot-dubbo-api
  5. │─build.gradle
  6. └─src
  7. └─main
  8. └─java
  9. └─org
  10. └─aaron
  11. └─springboot
  12. └─dubbo
  13. └─api
  14. DemoService.java
  15. ├─springboot-dubbo-consumer
  16. │─build.gradle
  17. └─src
  18. └─main
  19. ├─java
  20. └─org
  21. └─aaron
  22. └─springboot
  23. └─dubbo
  24. └─consumer
  25. DemoController.java
  26. DubboConfiguration.java
  27. DubboConsumerApplication.java
  28. └─resources
  29. application.yml
  30. └─springboot-dubbo-provider
  31. │─build.gradle
  32. └─src
  33. └─main
  34. ├─java
  35. └─org
  36. └─aaron
  37. └─springboot
  38. └─dubbo
  39. └─provider
  40. DemoServiceImpl.java
  41. DubboConfiguration.java
  42. DubboProviderApplication.java
  43. └─resources
  44. application.yml

引入外部依赖

  1. compile('com.alibaba:dubbo:2.6.3')
  2. compile('org.apache.zookeeper:zookeeper:3.4.9')
  3. compile('org.apache.curator:curator-framework:4.0.0')
  4. compile('org.springframework.boot:spring-boot-starter-web')

配置

1.生产者dubbo配置

  1. @Configuration
  2. public class DubboConfiguration {
  3.  
  4. @Bean
  5. public RegistryConfig registryConfig() {
  6. RegistryConfig registryConfig = new RegistryConfig();
  7. registryConfig.setAddress("zookeeper://127.0.0.1:2181");
  8. registryConfig.setClient("curator");
  9. return registryConfig;
  10. }
  11.  
  12. @Bean
  13. public ApplicationConfig applicationConfig() {
  14. ApplicationConfig applicationConfig = new ApplicationConfig();
  15. applicationConfig.setName("sprintboot-dubbo-provider");
  16. return applicationConfig;
  17. }
  18.  
  19. @Bean
  20. public ProtocolConfig protocolConfig() {
  21. ProtocolConfig protocolConfig = new ProtocolConfig();
  22. protocolConfig.setPort(12021);
  23. protocolConfig.setName("dubbo");
  24. return protocolConfig;
  25. }
  26. }
  27.  

2.消费者dubbo配置

  1. @Configuration
  2. public class DubboConfiguration {
  3.  
  4. @Bean
  5. public RegistryConfig registryConfig() {
  6. RegistryConfig registryConfig = new RegistryConfig();
  7. registryConfig.setAddress("zookeeper://127.0.0.1:2181");
  8. registryConfig.setClient("curator");
  9. return registryConfig;
  10. }
  11.  
  12. @Bean
  13. public ApplicationConfig applicationConfig() {
  14. ApplicationConfig applicationConfig = new ApplicationConfig();
  15. applicationConfig.setName("sprintboot-dubbo-consumber");
  16. return applicationConfig;
  17. }
  18.  
  19. @Bean
  20. public ConsumerConfig consumerConfig() {
  21. ConsumerConfig consumerConfig = new ConsumerConfig();
  22. consumerConfig.setTimeout(3000);
  23. return consumerConfig;
  24. }
  25. }

3.定义接口

  1. public interface DemoService {
  2. String sayHello();
  3. }

4.生产者实现接口

  1. import com.alibaba.dubbo.config.annotation.Service;
  2.  
  3. @Component
  4. @Service(interfaceClass = DemoService.class, version = "1.0")
  5. public class DemoServiceImpl implements DemoService {
  6.  
  7. @Override
  8. public String sayHello() {
  9. return "Hello Springboot Dubbo";
  10. }
  11. }
  12.  

5.消费者调用接口

  1. import com.alibaba.dubbo.config.annotation.Reference;
  2.  
  3. @RestController
  4. public class DemoController {
  5.  
  6. @Reference(interfaceClass = DemoService.class, version = "1.0")
  7. private DemoService demoService;
  8.  
  9. @RequestMapping("/hello")
  10. public String sayHello() {
  11. return demoService.sayHello();
  12. }
  13. }
  14.  

启动

  1. 本地启动zookeeper
  2. 依次启动springboot-dubbo-provider,springboot-dubbo-consumer
  3. 浏览器访问 localhost:8080/hello
  4. 看到返回'Hello Springboot Dubbo' 即表示调用成功

其他

示例源码(Github)

Dubbo注解配置

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号