千家信息网

SpringBoot with Apache Dubbo工程的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了SpringBoot with Apache Dubbo工程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
千家信息网最后更新 2026年11月02日SpringBoot with Apache Dubbo工程的示例分析

这篇文章主要介绍了SpringBoot with Apache Dubbo工程的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

1. 说明

该工程示例使用最新的Dubbo版本,Dubbo Starter以及SpringBoot版本,通过Gradle进行工程管理和构建,输出可执行程序。

2. 框架版本

2.1 Dubbo版本

  • org.apache.dubbo:dubbo:2.7.1

  • org.apache.dubbo:dubbo-spring-boot-starter:2.7.1

2.2 SpringBoot版本

  • org.springframework.boot:spring-boot-dependencies:2.1.1.RELEASE

3. 模块关系

  • 根工程(dubbo-case),仅用来定义构建任务,工程信息

  • 子工程(dubbo-api) ,定义RPC服务的接口,参数和响应结果的数据传输对象

  • 子工程(dubbo-client), RPC服务的消费端,实际开发过程中实际情况是一些服务调用其它服务的RPC服务

  • 子工程(dubbo-server),RPC服务的提供端

4. 工程详情

4.1 工程信息

  • 代码仓库:https://github.com/broncho/dubbo-case

  • 项目目录结构

备注:script目录归档执行脚本模版信息

4.2 接口定义(dubbo-api)

public interface HelloService {    String sayHello(String name);}

4.3 服务提供者(dubbo-server)

  • 接口实现

import com.github.broncho.dubbo.api.HelloService;import org.apache.dubbo.config.annotation.Service;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;/** * Author: secondriver * Created: 2019/8/4 */@Servicepublic class HelloServiceImpl implements HelloService {    @Override    public String sayHello(String name) {        return "Welcome " + name + " at " + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);    }}

备注:@Service注解是由Dubbo框架提供的

  • 启动类

@SpringBootApplicationpublic class DubboServerApplication {    public static void main(String[] args) {        new EmbeddedZooKeeper(2181, true).start();        SpringApplication.run(DubboServerApplication.class, args);    }}

备注:此处使用嵌入式Zookeeper,实现详情参见源码;或者可以直接采用独立Zookeeper服务

  • 配置文件application.properties

# 应用名称dubbo.application.name=dubbo-app1dubbo.application.qosEnable=truedubbo.application.qosPort= 22222dubbo.application.qosAcceptForeignIp=true# 接口实现者(服务实现)包dubbo.scan.base-packages=com.github.broncho.dubbo.server.impl# 注册中心信息dubbo.registry.id=my-zkdubbo.registry.address=localhost:2181dubbo.registry.protocol=zookeeperdubbo.registry.client=curator

关于Dubbo的配置参见:https://dubbo.apache.org/zh-cn/docs/user/references/api.html

4.4 服务消费者(dubbo-client)

  • 服务消费示例

@Componentpublic class BusinessComponent {    @Reference    private HelloService helloService;    public void greeting(String name) {        System.out.println(helloService.sayHello(name));    }}
  • 启动类

@SpringBootApplicationpublic class DubboClientApplication {    public static void main(String[] args) {        ConfigurableApplicationContext context = SpringApplication.run(DubboClientApplication.class, args);        BusinessComponent component = context.getBean(BusinessComponent.class);        //RPC        component.greeting("Dubbo RPC");    }}
  • 配置文件(application.properties)

# 应用程序名dubbo.application.name=dubbo-app2# 注册中心信息dubbo.registry.id=my-zkdubbo.registry.address=localhost:2181dubbo.registry.protocol=zookeeperdubbo.registry.client=curator

5. 打包部署

5.1 Gradle配置

  • gradle.properties

systemProp.activeProfile=devsystemProp.javaVersion=1.8
  • build.gradle

import org.springframework.boot.gradle.plugin.SpringBootPluginbuildscript {    repositories {        mavenLocal()        maven {            name "alimaven"            url "http://maven.aliyun.com/nexus/content/groups/public/"        }        mavenCentral()    }}plugins {    id 'java'    id 'idea'    id 'org.springframework.boot' version '2.1.1.RELEASE' apply false    id 'io.spring.dependency-management' version '1.0.8.RELEASE' apply false}//所有工程定义allprojects {    sourceCompatibility = System.properties["javaVersion"]    targetCompatibility = System.properties["javaVersion"]    repositories {        mavenLocal()        maven {            name "alimaven"            url "http://maven.aliyun.com/nexus/content/groups/public/"        }        mavenCentral()    }    group 'com.github.broncho'    version '1.0.0'}//子工程定义subprojects {    apply plugin: 'java'    apply plugin: 'io.spring.dependency-management'    apply plugin: 'distribution'    if (!name.contains("api")) {        apply plugin: 'org.springframework.boot'        apply plugin: 'application'    }    dependencyManagement {        imports {            mavenBom(SpringBootPlugin.BOM_COORDINATES)        }        dependencies {            dependencySet(group: 'org.apache.dubbo', version: '2.7.1') {                entry 'dubbo'                entry 'dubbo-spring-boot-starter'            }        }        dependencies {            dependencySet(group: 'org.apache.curator', version: '4.0.0') {                entry 'curator-framework'                entry 'curator-recipes'            }        }        dependencies {            dependency 'org.apache.zookeeper:zookeeper:3.5.5'        }    }    if (!project.name.contains("api")) {        println "Project ${name}  activeProfile ${System.properties['activeProfile']}"        jar {            enabled true        }        applicationDefaultJvmArgs = ['-Xms256m', '-Xmx256m']        /**         * 生成启动脚本         */        startScripts() {            doFirst {                unixStartScriptGenerator.template = resources.text.fromFile(                        project.getRootDir().getAbsolutePath() + "/script/unixStartScript.txt"                )                windowsStartScriptGenerator.template = resources.text.fromFile(                        project.getRootDir().getAbsolutePath() + "/script/windowsStartScript.txt"                )            }        }        /**         * 开发环境下不能排除配置文件,不然没法通过IDE运行项目         */        if (!"dev".equals(System.properties['activeProfile'])) {            proce***esources {                exclude 'application*.properties'            }        }        /**         * application*.properties统一复制到config目录         * SpringBoot程序启动时从config目录读取配置文件         */        applicationDistribution.from("src/main/resources") {            include 'application*.properties'            into 'config'        }    }}

项目采用了Spring Boot Gradle Plugin和dependency-management结合起来进行SpringBoot版本管理以及子工程中依赖的统一管理。

5.2 打包命令

gradle   -DactiveProfile=prod  clean  distZip

基于SpringBoot的dubbo-server和dubbo-client工程会输出发布包到各自工程目录的build/distributions目录。

5.3 发布包格式

感谢你能够认真阅读完这篇文章,希望小编分享的"SpringBoot with Apache Dubbo工程的示例分析"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

工程 服务 版本 目录 配置 信息 示例 接口 文件 篇文章 备注 程序 项目 消费 管理 分析 实际 框架 脚本 详情 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 科技赋能下的互联网金融 互联网通讯科技 互联网络科技有限公司 合肥互联网科技公司 万达互联网科技 狮子座互联网科技培训 互联网科技公司介绍 佩信高科技互联网 济南华为互联网科技产业总部基地 宝灵互联网科技有限公司 辽宁互联网新科技 注册互联网科技公司经营范围大全 想开互联网科技公司怎么样 富国互联网科技002692 上海同邻互联网科技有限公司规模 福州德业互联网科技 互联网科技企业商标注意事项 互联网科技大佬云集 优雇互联网科技有限公司 百单网互联网科技有限公司 科技互联网企业 上海亿帐通互联网科技 华脉科技工业互联网产品 互联网科技公司招聘 广州优美互联网科技 深圳育鹏互联网科技有限公司招聘 山东星卡互联网科技有限公司官网 21世纪互联网科技成就 广州三三互联网科技有限公司
0