dubbo实战01-入门案例
学习一门新技术的时候我们不仅要学会怎样运用这门技术同时还必须明白这项技术是为了解决什么样的问题而产生的真正做到知其然并知其所以然。dubbo 是什么Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架 使得应用可通过高性能的 RPC 实现服务的输出和输入功能 可以和Spring框架无缝集成。dubbo的作用Dubbo是一款高性能、轻量级的开源Java RPC框架 它提供了三大核心能力面向接口的远程方法调用 智能容错和负载均衡以及服务自动注册和发现。准备工作1、选择dubbo的注册中心:目前主流的几种注册中心主要有zookeeper、redis、Multicast、Simple 本案列中选择zookeeper充当注册中心版本为3.4.13 2、dubbo的版本为2.6.2 3、jdk版本为jdk8 4、maven版本为3.5.4 5、idea为开发工具工程的架构dubbo-project |dubbo-provider |src |main |java |com.kkcl.gmall |service |impl UserServiceImpl.java |MainApplication.java |resources |provider.xml |dubbo-consumer |src |main |java |com.kkcl.gmall |service |impl OrderServiceImpl.java |MainApplication.java |resources |consumer.xml |gmall-interface |src |main |java |com.kkcl.gmall |bean |UserAddress.java |service |UserService.java |OrderService.java工程的搭建本示例工程主要分为以下几个module:dubob-project为父工程 gmall-interface、dubbo-provider、dubbo-consumer为子module, gmall-interface主要的主要是集成接口与实体类供dubbo-provider和dubbo-consumer调用dubbo-provider充当生产者的角色为消费者提供服务dubbo-consumer充当消费者的角色 主要消费生产者提供的服务。实战案列UserAddress.java public class UserAddress implements Serializable { private Integer id; private String userAddress; //用户地址 private String userId; //用户id private String consignee; //收货人 private String phoneNum; //电话号码 private String isDefault; //是否为默认地址 Y-是 N-否 constructor... getter and setter.... } UserService.java public interface UserService { public ListUserAddress getUserAddressList(String userId); } UserServiceImpl.java public class UserServiceImpl implements UserService { Override public ListUserAddress getUserAddressList(String userId) { UserAddress address1 new UserAddress(1, 北京市, 1, 李老师, 010-56253898, Y); UserAddress address2 new UserAddress(2, 西安市, 1, 王老师, 010-56253809, N); return Arrays.asList(address1,address2); } } Order.service public interface OrderService { public ListUserAddress initOrder(String userId); } OrderServiceImpl.java Service public class OrderServiceImpl implements OrderService { Autowired UserService userService; Override public ListUserAddress initOrder(String userId) { // TODO Auto-generated method stub System.out.println(用户iduserId); //1、查询用户的收货地址 ListUserAddress addressList userService.getUserAddressList(userId); for (UserAddress userAddress : addressList) { System.out.println(userAddress.getUserAddress()); } return addressList; } } provider.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:dubbohttp://code.alibabatech.com/schema/dubbo xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd !--指定当前服务或者应用的名字 -- dubbo:application namedubbo-provider/ !--指定注册中心的位置(以下两种方式选择其中的一种即可) -- !--dubbo:registry addresszookeeper://127.0.0.1:2181/-- dubbo:registry protocolzookeeper address127.0.0.1:2181/ !---指定通信的规则(通信协议通信端口)-- dubbo:protocol namedubbo port20880/ !--暴露的服务-- dubbo:service interfacecom.kkcl.gmall.service.UserService refuserServiceImpl/ !--服务实现-- bean iduserServiceImpl classcom.kkcl.gmall.service.impl.UserServiceImpl/ /beans consumer.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beans xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:dubbohttp://code.alibabatech.com/schema/dubbo xmlns:contexthttp://www.springframework.org/schema/context xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd context:component-scan base-packagecom.kkcl.gmall.service.impl/ !--应用的名称-- dubbo:application namedubbo-consumer/ !--注册中心-- dubbo:registry addresszookeeper://127.0.0.1:2181/ !--声明需要调用的远程服务的名称生成远程服务代理-- dubbo:reference interfacecom.kkcl.gmall.service.UserService iduserService/ /beans MainApplication.java public class MainApplication { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext ioc new ClassPathXmlApplicationContext(provider.xml或者consumer.xml); ioc.start(); System.in.read(); } }项目部署1、到zookeeper官网下载zookeeper,这里下载的版本为3.4.13下载完成后到zookeeper的conf目录下将zoo_simple.cfg复制重命名为zoo.cfg并配置对应的data存储的目录 dataDir../data 2、分别启动dubbo-provider中的MainApplication.java 3、进入到dubbo的admin后台服务管理页面查看服务的启用情况源码地址https://github.com/kkcl/kkcl-learning-example/tree/master/dubbo-project

相关新闻

JVS视角:工信部新提的“小快轻准“,到底在说什么

JVS视角:工信部新提的“小快轻准“,到底在说什么

最近工信部出了一份文件——《"小快轻准"数字化产品和服务培育指引(2026年版)》。四个字:小、快、轻、准。看着像口号,但细看内容,其实是对过去几年制造业数字化转型路线的一次方向性调整。过去几年行业里的…

2026/9/19 12:43:13 阅读更多 →
全球首个3T级模型Kimi K3开源,魔搭社区同步上线

全球首个3T级模型Kimi K3开源,魔搭社区同步上线

7月28日,Kimi K3已上线魔搭社区,用户可在魔搭社区官网一键下载。作为全球首个开放的 3T 级模型,Kimi K3 总参数量达 2.8T,具备原生视觉能力与 100 万 token 上下文窗口,面向长程编码、知识工作与推理等前沿智能场景设计…

2026/9/19 14:51:24 阅读更多 →
虚拟机无法连接虚拟设备sata0:1

虚拟机无法连接虚拟设备sata0:1

以下仅作为自己的一个尝试设置,验证对自己的虚拟机问题有效。在设置里面修改CD/DVD(SATA),改为使用ISO影像文件。改完后虚拟机开机黑屏的问题也解决了。同时我虚拟机设置硬件设备中删除了打印机。这个主要是因为虚拟机每次开启的时候总是消息提醒找不到打…

2026/9/19 12:50:04 阅读更多 →

最新新闻

CheckBox 选中背景色不生效?用 TaoToken 接 Codex 改 input:checked 样式

CheckBox 选中背景色不生效?用 TaoToken 接 Codex 改 input:checked 样式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 20:23:28 阅读更多 →
10 个前端 MCP 服务器盘点:这次用 TaoToken 走通 Claude Code 的模型通道

10 个前端 MCP 服务器盘点:这次用 TaoToken 走通 Claude Code 的模型通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/21 20:23:28 阅读更多 →
莎木online 面试必问:3分钟吃透核心原理与薪资真相

莎木online 面试必问:3分钟吃透核心原理与薪资真相

莎木online 面试必问:3分钟吃透核心原理与薪资真相 别再去啃那些几百页的官方文档了,真的,没人能看完。 很多刚入行的朋友,拿到【莎木online】相关的技术栈,第一反应就是慌。为什么?因为资料太散,官方文档太长抓不住重点,面试时被问倒…

2026/9/21 20:23:28 阅读更多 →
idt官网速查:面试原理吃透,完整示例救急

idt官网速查:面试原理吃透,完整示例救急

idt官网速查:面试原理吃透,完整示例救急 面试被问原理答不上来,那一刻脑子是空白的。别慌,这就是你急需 idt官网 相关技术点 完整示例…

2026/9/21 20:23:28 阅读更多 →
成志鹏证书避坑指南:版本升级后API全变?3招搞定

成志鹏证书避坑指南:版本升级后API全变?3招搞定

成志鹏证书避坑指南:版本升级后API全变?3招搞定 刚把环境升到最新稳定版,原本跑得好好的代码直接崩了?报错信息满屏红字,查半天文档发现核心 API 签名全改了。这种“版本升级后 API…

2026/9/21 20:23:28 阅读更多 →
3个坑让你面试翻车:第一徻所性能优化完整示例

3个坑让你面试翻车:第一徻所性能优化完整示例

3个坑让你面试翻车:第一徻所性能优化完整示例 面试被问原理答不上来,那种大脑一片空白的感觉,真的比写不出代码还难受。很多转岗的朋友,简历上写着精通Java或Go,面试官随口一问“这个模块为什么慢”,你只能支支吾吾说“可能是GC”,或者直接愣…

2026/9/21 20:22:27 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

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

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

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

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

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

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

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

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

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

2026/9/21 4:51:05 阅读更多 →

月新闻

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

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

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

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

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

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

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

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

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

2026/9/19 23:35:34 阅读更多 →