栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Java

SpringBoot快速集成Dubbo(附带源码)

Java 更新时间:发布时间: 百科书网 趣学号

文章目录
  • 前言
  • 项目代码
    • 项目目录
    • dubbo-interface
    • dubbo-producer
    • dubbo-consumer
  • 测试演示

前言

刚开始搜了许多springboot集成dubbo案例,试了两三个都不行,之后我是根据慕课网的一个Dubbo案例来进行跟着学习搭建。

当前项目是Dubbo+Zookeeper的一个简洁版集成案例,以Zookeeper作为注册中心,所以请提前进行Zookeeper的安装配置。

配套代码:github-springboot-dubbo、gitee-springboot-dubbo

所有博客文件目录索引:博客目录索引(持续更新)


项目代码 项目目录

采用模块化进行开发:

  • dubbo-consumer:消费者模块,这个模块就是对外暴露api接口的,其中接口的service会去进行一个RPC调用。
  • dubbo-interface:rpc接口调用模块,主要来定义service接口与一些实体类。
  • dubbo-producer:生产者模块,这个模块会在启动时注册到zookeeper。

pom.xml:父pom依赖



    4.0.0

    com.changlu
    springboot-dubbo
    1.0-SNAPSHOT
    
        dubbo-producer
        dubbo-interface
        dubbo-consumer
    
    pom

    
    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.12.RELEASE
         
    

    
        1.8
        2.1.12.RELEASE
        2.7.4.1
    

    
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            

            
            
                org.apache.dubbo
                dubbo-dependencies-bom
                ${dubbo.version}
                pom
                import
            

            
                org.apache.dubbo
                dubbo
                ${dubbo.version}
                
                
                    
                        org.springframework
                        spring
                    
                    
                        javax.servlet
                        servlet-api
                    
                    
                        log4j
                        log4j
                    
                
            

            
            
                com.changlu
                dubbo-interface
                1.0-SNAPSHOT
            
            
                com.changlu
                dubbo-producer
                1.0-SNAPSHOT
            
        
    
    

dubbo-interface

首先进行接口模块的定义,主要是定义其中的service接口:

pom.xml:



    
    
        springboot-dubbo
        com.changlu
        1.0-SNAPSHOT
    
    4.0.0

    dubbo-interface


pojo/user.java:

package com.changlu.pojo;

import java.io.Serializable;


public class User implements Serializable {  //注意进行序列化

    private String name;
    private String sex;
    private Integer age;

    public User(String name, String sex, Integer age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + ''' +
                ", sex='" + sex + ''' +
                ", age=" + age +
                '}';
    }
}

/service/UserService.java:

package com.changlu.service;

import com.changlu.pojo.User;


public interface UserService {
    
    User getUserById(Integer id);
    
}

dubbo-producer

pom.xml:



    
        springboot-dubbo
        com.changlu
        1.0-SNAPSHOT
    
    4.0.0

    dubbo-producer

    
        
        
            org.springframework.boot
            spring-boot-starter
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.apache.dubbo
            dubbo-spring-boot-starter
            2.7.4.1
        

        
        
            org.apache.dubbo
            dubbo
        

        
        
            org.apache.dubbo
            dubbo-dependencies-zookeeper
            ${dubbo.version}
            pom
            
                
                    org.slf4j
                    slf4j-log4j12
                
            
        

        
        
            com.changlu
            dubbo-interface
        
    



application.yml:

# 手动指定版本号,分别表示:大版本.中版本.小版本。【大版本一般以年为单位,中版本一般是指某个功能大的迭代,小版本则是小功能的升级】
demo:
  service:
    version: 1.0.0

server:
  port: 8801

spring:
  application:
    name: producer

dubbo:
  # 协议
  protocol:
    name: dubbo
    port: -1
  # 注册配置
  registry:
    # 注册地址
    address: zookeeper://192.168.10.40:2181
    # 缓存信息
    file: C:Users93997Desktopupload/dubbo-cache${spring.application.name}dubbo.cache
  # 扫描指定的service包
  scan:
    base-packages: com.changlu.service

service/UserServiceImpl.java:

package com.changlu.service;

import com.changlu.pojo.User;
import org.apache.dubbo.config.annotation.Service;


//注意:这里的service是dubbo中的service注解
@Service(version = "${demo.service.version}")
public class UserServiceImpl implements UserService{
    @Override
    public User getUserById(Integer id) {
        return new User("changlu", "男", 18);
    }
}

DubboProducerApplication.java:

package com.changlu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;


@EnableAutoConfiguration
public class DubboProducerApplication {
    public static void main(String[] args) {
        SpringApplication.run(DubboProducerApplication.class, args);
    }
}
dubbo-consumer

pom.xml:



    
        springboot-dubbo
        com.changlu
        1.0-SNAPSHOT
    
    4.0.0

    dubbo-consumer

    
        
            org.springframework.boot
            spring-boot-starter
        

        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
            org.apache.dubbo
            dubbo-spring-boot-starter
            2.7.4.1
        

        
            org.apache.dubbo
            dubbo
        
        
        
            org.apache.dubbo
            dubbo-dependencies-zookeeper
            ${dubbo.version}
            pom
            
                
                    org.slf4j
                    slf4j-log4j12
                
            
        

        
        
            com.changlu
            dubbo-interface
        
    

application.yml:

# 手动指定版本号,分别表示:大版本.中版本.小版本。【大版本一般以年为单位,中版本一般是指某个功能大的迭代,小版本则是小功能的升级】
demo:
  service:
    version: 1.0.0


server:
  port: 8802

spring:
  application:
    name: consumer

dubbo:
  # 通信协议
  protocol:
    name: dubbo
    port: -1   # -1表示随机使用一个端口号进行监听,对于服务发现并不是靠端口号,无需特别关注
  # 注册配置
  registry:
    # 注册地址
    address: zookeeper://192.168.10.40:2181
    # 缓存信息
    file: C:Users93997Desktopupload/dubbo-cache${spring.application.name}dubbo.cache

controller/UserController.java·:

package com.changlu.controller;

import com.changlu.pojo.User;
import com.changlu.service.UserService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class UserController {

    //使用dubbo提供依赖注入注解,指定版本号
    @Reference(version = "${demo.service.version}")
    private UserService userService;

    @GetMapping("/user")
    public User userInfo(){
        return userService.getUserById(123);
    }

}

DubboConsumerApplication.java:

package com.changlu;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class DubboConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboConsumerApplication.class, args);
    }

}
测试演示

1、首先启动生产者也就是先让对应的服务进行注册到zookeeper注册中心上:注意若是出现以下信息表示注册成功

2、启动消费者,也就是我们的web模块

若是出现以下log信息同样也表示连接zookeeper成功

3、最后打开浏览器来进行接口测试:出现以下信息就表示RPC调用成功,你也可以自己通过debug来进行调试


我是长路,感谢你的耐心阅读。如有问题请指出,我会积极采纳!
欢迎关注我的公众号【长路Java】,分享Java学习文章及相关资料
Q群:851968786 我们可以一起探讨学习
注明:转载可,需要附带上文章链接

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/957096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号