阿里巴巴提供了 dubbo 集成 springBoot 开源项目,可以到 GitHub 上 https://github.com/apache/dubbo-spring-boot-project 查看入门教程

在这里插入图片描述
下载 为 ZIP 压缩包,在本地打开即可

一、创建接口 module

按照 Dubbo 官方开发建议,创建一个接口项目,该项目只定义接口和 model 类。

项目名称 :interface-api

此项目就是一个普通的 maven 项目

  • 新建maven模块

我们在空项目中以新建模块的形式创建接口服务,便于项目管理

在这里插入图片描述

  • 设置 gav

在这里插入图片描述

  • 使用本地配置与仓库

在这里插入图片描述

  • 创建 model 类
package com.fancy.model;

import java.io.Serializable;

public class Student implements Serializable {
    private Integer id;
    private String name;
    private Integer age;

    public Student() {
    }

    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
      @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

  • 服务接口
package com.fancy.service;

import com.fancy.model.Student;

public interface StudentService {
    Student queryStudent(Integer studentId);
}

  • 打包

点击 install 即可将项目打包成 jar 发布到本地仓库

在这里插入图片描述
出现如下界面打包成功
在这里插入图片描述

二、创建服务提供者 module

实现 api 项目中的接口

项目名称:service-prvoider

使用 SpringBoot Initializer 创建项目, 不用选择依赖

  • 新建项目

在这里插入图片描述
不用选择依赖

在这里插入图片描述

  • pom.xml

在 pom.xml 中添加 Dubbo 和 Zookeeper 依赖

<dependency>
    <groupId>com.fancy</groupId>
    <artifactId>interface-api</artifactId>
    <version>1.0.0</version>
</dependency>

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-spring-boot-starter</artifactId>
    <version>2.7.8</version>
</dependency>

<dependency>
    <groupId>org.apache.dubbo</groupId>
    <artifactId>dubbo-dependencies-zookeeper</artifactId>
    <version>2.7.8</version>
    <type>pom</type>
</dependency>
  • application.properties

在这里插入图片描述

  • 创建接口的实现类

@DubboService 注解用于暴露服务,供消费者消费

package com.example.serviceprovider.service;

import com.fancy.model.Student;
import com.fancy.service.StudentService;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.stereotype.Component;

@Component
@DubboService(interfaceClass = StudentService.class, version = "1.0")
public class StudentServiceImpl implements StudentService {

   @Override
   public Student queryStudent(Integer studentId) {
       Student student = new Student();
       student.setId(studentId);
       student.setName("张三");
       student.setAge(20);
       return student;
   }
}
  • 主启动类型 ServiceProviderApplication

我们运行主启动类时,在上方加入 @EnableDubbo 注解,我们可以使用这个注解来开启 Dubbo 服务,使用基于注解的 Dubbo 的 RPC 调用。

注意 : 在运行主启动类之前,我们要打开 Zookeeper 否则连接不上

在这里插入图片描述
在这里插入图片描述
出现下图,则连接 Zookeeper 成功
在这里插入图片描述

不过在其启动时我们发现日志报红,这是因为日志依赖 SLF4j 多次加入了,只需要依赖一次就可以。
在这里插入图片描述
解决 :排除多余的 SLF4j 依赖, 提供者和消费者项目都需要这样做。

在这里插入图片描述

三、创建消费者 module

项目名称:consumer
使用 Spring Boot Initializer 创建项目, 选择 web 依赖

  • 创建项目

在这里插入图片描述

选择 web 依赖

在这里插入图片描述

  • pom.xml
<dependency>
   <groupId>com.fancy</groupId>
   <artifactId>interface-api</artifactId>
   <version>1.0.0</version>
</dependency>

<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-spring-boot-starter</artifactId>
   <version>2.7.8</version>
</dependency>
<dependency>
   <groupId>org.apache.dubbo</groupId>
   <artifactId>dubbo-dependencies-zookeeper</artifactId>
   <version>2.7.8</version>
   <type>pom</type>
   <exclusions>
       <exclusion>
           <artifactId>slf4j-log4j12</artifactId>
           <groupId>org.slf4j</groupId>
       </exclusion>
   </exclusions>
</dependency>
  • application.properties

在这里插入图片描述

  • 创建 controller 类

@DubboReference 注解将创建好的代理对象,注入给 studentService

package com.example.customer.controller;

import com.fancy.model.Student;
import com.fancy.service.StudentService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @DubboReference(interfaceClass = StudentService.class, version = "1.0", check = false)
    private  StudentService studentService;



    @GetMapping("/student/{id}")
    public String searchStudent(@PathVariable Integer id) {
        Student student = studentService.queryStudent(id);
        return "查询学生 : " + student.toString();

    }

}

  • 主启动类 CustomerApplication

在主启动类上加上 @EnableDubbo 注解
在这里插入图片描述

四、测试应用

① 先启动 zookeeper
在这里插入图片描述

② 运行服务提供者 service-provider

在这里插入图片描述

③ 运行消费者 consumer

在这里插入图片描述

④ 在浏览器执行 http://localhost:8080/myweb/student/id=1

模拟发送请求即可

在这里插入图片描述
集成 dubbo 成功

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐