欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-27 16:54:39
工作中用springboot搭建项目,用dubbo做远程调用。springboot提倡注解配置和java配置,本文是基于dubbo最新版本2.6.3,使用注解方式的示例。...

工作中用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注解配置

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