SpringBoot如何使用Dubbo(直连模式)
1.什么是DubboDubbo 是一款高性能、轻量级的 Java 分布式服务框架RPC 框架专门用来做 “微服务之间的远程调用”。简单说A 服务 想调用 B 服务 的方法像调用本地方法一样方便底层就是 Dubbo 帮你做通信。Registry注册中心注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者。Consumer服务消费者调用远程服务的服务消费方服务消费者在启动时向注册中心订阅自己所需的服务服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。Monitor监控中心服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心。Provider服务提供者暴露服务的服务提供方服务提供者在启动时向注册中心注册自己提供的服务。核心作用:1远程服务调用RPC让服务之间像调用本地方法一样调用远程接口屏蔽网络细节。2服务注册与发现服务启动时把自己注册到注册中心如 Nacos、ZooKeeper调用方自动发现可用服务。3负载均衡、容错、限流自动把请求分给多台服务器某台挂了自动切换保证系统高可用。说明本文只简单搭建和使用Dubbo后续文章会整合成分布式架构。本文用的工具IDEA版本2026.1JDK版本17Spring Boot版本3.xDubbo版本3.3.0本文先创建父模块然后分别创建生产者和消费者本文项目结构如下D:\Project\test\dubbo_demo │ ├── pom.xml# 父工程 Maven 配置│ ├── dubbo-api/# 接口模块│ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ ── com.guo.service/ │ │ │ └── DogService.java │ │ └── resources/ │ └── test/java/ │ ├── dubbo-provider/# 服务提供者模块│ ├── pom.xml │ ── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.guo/ │ │ │ ├── ProviderApplication.java │ │ │ └── service/ │ │ │ └── DogServiceImpl.java │ │ └── resources/ │ │ └── application.yml │ └── test/java/ │ └── dubbo-consumer/# 服务消费者模块├── pom.xml └── src/ ├── main/ │ ├── java/ │ │ └── com.guo/ │ │ ├── ConsumerApplication.java │ │ └── controller/ │ │ └── DogController.java │ └── resources/ │ └── application.yml └── test/java/2.搭建父模块2.1 创建父模块项目父模块本身没有其他代码主要用来管理子模块实际上就是一个空Maven项目。这里选择“Java”构建系统选择“Maven”JDK这里选17然后点击下面的创建。创建完毕后默认界面如下父工程没有其他的代码只有一些依赖所以这里直接把src文件删除右击src文件夹然后选择“删除”然后需要修改packaging打开pom.xml把下面的内容放到pom.xml中。这行的意思是表示父工程负责管理不负责代码packagingpom/packaging2.2 添加公共依赖因为后面会创建子模块子模块需要依赖如果子模块很多需要填写的依赖就很多。此时我们可以在父模块引入依赖子模块沿用父模块的依赖即可。打开父工程的pom.xml然后添加spring boot、dubbo的一些依赖。另外 也增加了上面关于版本的定义比如spring-boot.version3.5.14/spring-boot.version然后有三种方式来下载依赖第一种点击下图的1位置。第二种先点击下图的A,再点击B。第三种双击下图绿的的框。下面的pom.xml中内容的参考(请参考下图的依赖)。?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.guo/groupIdartifactIddubbo-demo2/artifactIdversion1.0-SNAPSHOT/versionpackagingpom/packagingpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncodingspring-boot.version3.5.14/spring-boot.versiondubbo.version3.3.0/dubbo.versionjdk.version17/jdk.version/properties!-- 依赖管理子模块可直接继承无需重复引入 --dependencyManagementdependencies!-- Spring Boot 核心依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactIdversion${spring-boot.version}/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion${spring-boot.version}/versionscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion${spring-boot.version}/version/dependency!-- Dubbo 核心依赖 --dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion${dubbo.version}/version/dependency/dependencies/dependencyManagement!-- 插件管理子模块继承 --buildpluginManagementpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdversion${spring-boot.version}/version/plugin/plugins/pluginManagement/build/project下载依赖后的参考界面如下父模块无需编写 Java 代码仅负责 依赖版本管理 和 子模块关联后续子模块直接继承父模块的依赖配置避免版本冲突。3.搭建api部分3.1 创建api模块api模块只对外提供接口所有调用关系都有api模块来完成。新建模块这里选择“Java”名称填写“dubbo-api”构建方式选MavenJDK这里选17的版本然后点击“创建”创建完了后项目如下可以看到父级的pom文件中自动增加了我们刚才创建的module3.2 创建一个接口我们创建一个Service接口。创建之前先创建包。右击 dubbo-api模块的java文件夹。选择“新建”—“软件包”。包名可以参考下面这样可以写成这样的的目录。com.guo.service注意我们这里只是简单的提供了一个service层 实际开发中可能还有其他的软件包比如com.guo.entity等这里不做演示。创建完后项目结构如下:然后右击刚才创建的文件夹service选择新建—“Java类”这里创建的接口的名字假如是 DogService注意这里选的是“接口”(interface ),不是类。然后按回车确认。在里面增加一行代码String sayHello(String name);完整代码参考如下packagecom.guo.service;publicinterfaceDogService{//一个接口StringsayHello(Stringname);}3.搭建 生成者服务提供者模块这里的生产者主要的功能是提供服务数据等往前要去实现前面的接口往后要做一些查询操作。本文只演示实现接口部分。3.1 创建模块右击父工程选择“新建”—“模块”填写相关的内容然后点击创建。创建完后项目结构如下3.2 添加依赖这个模块需要增加一些依赖打开dubbo-provider模块的pom.xml文件增加下面的依赖整体代码参考如下?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.guo/groupIdartifactIddubbo_demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIddubbo-provider/artifactIddependencies!--dubbo 与 spring-boot 整合包--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactId/dependency!--springboot 启动核心包--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project3.3 添加实现类这里主要实现api模块的DogService接口。先创建项目包。右击dubbo-provider中的java文件夹选择“新建”—“软件包”。软件包的包名参考为 com.guo.service然后按回车确定。右击刚才创建的service文件夹选择“新建”—“Java类”实现类的名字是 DogServiceImpl然后我们让这个实现类去实现api模块的接口。参考代码如下packagecom.guo.service;importorg.apache.dubbo.config.annotation.DubboService;importorg.springframework.stereotype.Component;DubboServiceComponentpublicclassDogServiceImplimplementsDogService{OverridepublicStringsayHello(Stringname){returnHello, name (from direct provider);}}注意当你去实现DogService这个接口时候报错是正常的解决这个报错很简单把鼠标放上去会看到一个“更多操作”然后点击“更多操作在弹出的菜单里面点击“添加对模块xxxx的依赖”此时你会发现当前这个模块的pom.xml文件中多了一个依赖就是我们前面创建的dubbo-api模块。3.4 创建启动类右击dubbo-provider中的 “guo”这个文件夹注意启动类的位置类名为ProviderApplication然后按回车启动类的参考代码如下:packagecom.guo;importorg.apache.dubbo.config.spring.context.annotation.EnableDubbo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;EnableDubboSpringBootApplicationpublicclassProviderApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ProviderApplication.class,args);System.out.println(Dubbo Provider started.);}}添加完代码后项目参考如下3.5 添加配置文件右击dubbo-provider中的resources文件夹选择“新建 ,然后点击“文件”这个配置文件的名字叫application.yml里面参考的配置内容如下server:port:8081dubbo:application:name:dubbo-providerprotocol:name:dubboport:20880# dubbo 服务端口消费者直连时需要qos:enable:false添加后项目内容如下4.搭建 消费者模块消费者模块和生产者模块非常类似。4.1 创建模块右击项目名点击“新建”—“模块”。然后参考输入下面的内容创建完毕以后项目结构如下4.2 添加依赖打开dubbo-provider模块的依赖文件参考增加下面的内容参考代码?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdcom.guo/groupIdartifactIddubbo_demo/artifactIdversion1.0-SNAPSHOT/version/parentartifactIddubbo-consumer/artifactIddependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project4.3 添加Contorller先新建软件包右击java选择“新建”——“软件包”参考输入下面的内容com.guo.controller然后继续右击Controller点击“新建”然后点击“Java 类”Controller的名字假定为DogController代码参考如下packagecom.guo.controller;importcom.guo.service.DogService;importorg.apache.dubbo.config.annotation.DubboReference;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.RestController;RestControllerpublicclassDogController{// 直连模式直接指定 Provider 的地址和 Dubbo 端口DubboReference(urldubbo://127.0.0.1:20880)privateDogServicedogService;GetMapping(/hello)publicStringsayHello(RequestParam(name)Stringname){returndogService.sayHello(name);}}4.4 创建启动类右击“guo”这个文件夹选择“新建”—“Java类”类名为ConsumerApplication代码参考packagecom.guo;importorg.apache.dubbo.config.spring.context.annotation.EnableDubbo;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;EnableDubboSpringBootApplicationpublicclassConsumerApplication{publicstaticvoidmain(String[]args){SpringApplication.run(ConsumerApplication.class,args);}}4.5 添加配置文件右击“resources”文件选择 “新建”—“文件”文件的名字为application.yml内容参考如下server:port:8082dubbo:application:name:dubbo-demo-consumer# 不需要任何注册中心配置qos:enable:false5.启动测试先启动生产者Provider模块再启动消费者模块Consumer可以看到正常启动然后打开浏览器在浏览器中输入下面的地址http://localhost:8082/hello?name张三看到下面内容表示成功本文参考代码如下1百度网盘通过网盘分享的文件dubbo_demo.zip链接: https://pan.baidu.com/s/1xIVD2-sONUQE6e2JwLqFYg?pwdx1nd 提取码: x1nd2夸克网盘我用夸克网盘给你分享了「dubbo_demo.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/11503b5dq7链接https://pan.quark.cn/s/532fe6dc810c?pwdxFED提取码xFED

相关新闻

计算机网络安全实战:从攻击面收敛到安全运营的核心方法

计算机网络安全实战:从攻击面收敛到安全运营的核心方法

聊到计算机网络安全,我脑海里第一反应不是某款防火墙产品,也不是某次攻防演练的得分,而是“攻防双方其实都在用想象力博弈”这件事。这些年我带过团队做安全运维,也当过应急响应的值班员,越来越觉得:真正决…

2026/9/26 15:58:25 阅读更多 →
降重降AI二合一实测:2026年一次搞定双检

降重降AI二合一实测:2026年一次搞定双检

毕业论文送审前,最怕的就是查重刚压下去,AI疑似度又冒出来。知网、维普陆续接入AI生成内容检测后,两道关卡都得过。过去降重用一套工具、降AI再换一套,格式错乱、内容走样是常事。今年市面上冒出一批宣称降重降AI二合一的工具&…

2026/9/26 15:57:24 阅读更多 →
毕业论文写作工具红黑榜:2026实测避雷指南

毕业论文写作工具红黑榜:2026实测避雷指南

三月底交初稿,四月初被导师批注糊满页边距,五月底查重飘红——这是绝大多数26届毕业生正在经历的循环。毕业论文写作工具这两年冒出来几十个,宣传话术一个比一个唬人,实际用起来却参差不齐。这篇红黑榜基于26届毕业生实际使用反馈…

2026/9/26 15:57:24 阅读更多 →

最新新闻

验证码识别脚本实战:OpenCV预处理+CNN训练全流程解析

验证码识别脚本实战:OpenCV预处理+CNN训练全流程解析

简介:面向计算机相关专业学习者与机器学习初学者的实战项目,基于机器学习算法实现验证码识别,包含可直接运行测试的完整源码与说明文档,适用于课程设计、毕业设计或企业初期项目演示,具有较高的学习借鉴价值。压缩包共…

2026/9/26 16:36:42 阅读更多 →
基于自适应关键帧的微表情识别算法实现与避坑指南

基于自适应关键帧的微表情识别算法实现与避坑指南

简介:这份资源面向情感计算与计算机视觉方向的研究者、学生及开发者,提供一套基于自适应关键帧的视频微表情识别算法完整实现,用于解决微表情持续时间短、识别难度大、计算开销高等问题。压缩包共14个文件,约404KB,以6…

2026/9/26 16:36:42 阅读更多 →
科研成果申报管理系统源码:从跑通到改造的完整指南

科研成果申报管理系统源码:从跑通到改造的完整指南

简介:这份科研成果申报管理系统源码面向计算机专业学生及需要完成毕业设计的开发者,提供一套覆盖项目申报、评审管理、进度跟踪与文档管理等环节的完整Web应用实现,帮助读者理解科研管理业务的数字化流程与软件工程落地方式。压缩包共155个文…

2026/9/26 16:36:42 阅读更多 →
基于Zi-Pi指标的微生物网络关键物种识别:R语言实现与社区分析指南

基于Zi-Pi指标的微生物网络关键物种识别:R语言实现与社区分析指南

简介:面向微生物网络分析中节点模块内连通度与模块间连通度的量化需求,这份资源提供了基于R语言的完整计算方案,适用于生态学、生物信息学等领域研究者。压缩包内共2个文件,包含1个R脚本和1个graphml网络文件,脚本可直…

2026/9/26 16:36:42 阅读更多 →
宠物管理系统全栈教学闭环:原型→数据库→源码实战

宠物管理系统全栈教学闭环:原型→数据库→源码实战

简介:本资源是一套完整的宠物管理系统开发学习套件,面向Java或Web全栈初学者及课程设计学生,聚焦宠物服务类信息化管理场景,涵盖需求分析、界面交互与数据持久化全流程实践。压缩包共4个文件,含2个ZIP(分别…

2026/9/26 16:36:42 阅读更多 →
python的智能制造导论工业场景模拟第一百二十九篇:仿真物料来料波动场景,测试工艺系统自适应调整能力,统计不同来料下产品不良率变化。

python的智能制造导论工业场景模拟第一百二十九篇:仿真物料来料波动场景,测试工艺系统自适应调整能力,统计不同来料下产品不良率变化。

仿真物料来料波动场景,测试工艺系统自适应调整能力,统计不同来料下产品不良率变化周四下午两点,质量部的小陈抱着一摞首件检验报告冲进工艺办公室,脸色不太好看。"你看这组数据,"她把报告摊在桌上&#xff0…

2026/9/26 16:35:42 阅读更多 →

日新闻

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、…

2026/9/26 0:00:25 阅读更多 →
学校官网模拟全流程实践:从页面布局到后端接口与部署

学校官网模拟全流程实践:从页面布局到后端接口与部署

如果你正在找一门 Web 大作业的题目,或者刚开始接触 Web 前端开发想做点能拿来展示的东西,“学校官网模拟”几乎是最稳的选择。题目看着简单,但要把导航、新闻列表、轮播 Banner、二级页面、后台数据都串起来,其实已经把前端布局、…

2026/9/26 0:00:25 阅读更多 →
超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

超级玛丽游戏源码C++:从零搭建横版跳跃游戏工程

简介:这是一份面向游戏开发初学者与C进阶学习者的超级玛丽(超级马里奥)游戏源码,基于C面向对象编程实现,适合想通过经典项目理解游戏主循环、角色类设计、地图关卡加载与物理碰撞检测的读者参考。压缩包共49个文件&…

2026/9/26 0:00:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/25 19:27:14 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/25 20:29:09 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/25 20:29:43 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/25 19:27:26 阅读更多 →