springboot集成dubbo注解版的示例代码

 更新时间:2018年10月20日 10:55:07   作者:Menng  
这篇文章主要介绍了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
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.生产者实现接口

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.消费者调用接口

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();
  }
}

启动

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

其他

示例源码(Github)

Dubbo注解配置

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

您可能感兴趣的文章:

相关文章

  • SpringBoot2.7.14整合redis7的详细过程

    SpringBoot2.7.14整合redis7的详细过程

    这篇文章主要介绍了SpringBoot2.7.14整合redis7的详细过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-10-10
  • Springboot项目监听器失效问题解决

    Springboot项目监听器失效问题解决

    这篇文章主要介绍了Springboot项目监听器失效问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • JAVA操作HDFS案例的简单实现

    JAVA操作HDFS案例的简单实现

    本篇文章主要介绍了JAVA操作HDFS案例的简单实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot2.0如何通过fastdfs实现文件分布式上传

    springboot2.0如何通过fastdfs实现文件分布式上传

    这篇文章主要介绍了springboot2.0如何通过fastdfs实现文件分布式上传,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • SpringBoot对Druid配置SQL监控功能失效问题及解决方法

    SpringBoot对Druid配置SQL监控功能失效问题及解决方法

    这篇文章主要介绍了SpringBoot对Druid配置SQL监控功能失效问题的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-05-05
  • 详解Java枚举与接口常量和类常量的区别

    详解Java枚举与接口常量和类常量的区别

    这篇文章主要为大家详细介绍了Java中枚举与接口常量、类常量有什么区别,文中的示例代码讲解详细,具有一定的参考价值,感兴趣的可以了解一下
    2022-10-10
  • Java实现的贷款金额计算功能示例

    Java实现的贷款金额计算功能示例

    这篇文章主要介绍了Java实现的贷款金额计算功能,结合实例形式分析了Java简单数值运算及类型转换等相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • java将一个整数转化成二进制代码示例

    java将一个整数转化成二进制代码示例

    这篇文章主要介绍了java将一个整数转化成二进制代码示例,具有一定借鉴价值,需要的朋友可以参考下
    2017-12-12
  • Java异常处理运行时异常(RuntimeException)详解及实例

    Java异常处理运行时异常(RuntimeException)详解及实例

    这篇文章主要介绍了 Java异常处理运行时异常(RuntimeException)详解及实例的相关资料,需要的朋友可以参考下http://time.qq.com/?pgv_ref=aiotime
    2017-05-05
  • java加密MD5实现及密码验证代码实例

    java加密MD5实现及密码验证代码实例

    这篇文章主要介绍了java加密MD5实现及密码验证代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论