SpringBoot+Dubbo+zookeeper 急速入门案例
项目目录结构:

第一步:创建一个SpringBoot项目,这里选择Maven项目或者Spring Initializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.0.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.ly</groupId><artifactId>SpringBoot-Dubbo</artifactId><packaging>pom</packaging><version>0.0.1-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.3.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency></dependencies></project>
更多Java学习指南以及最新项目场景题,需要的宝子
Java学习包传送门
第二步:添加Module,以dubbo-provider为例

可以使用Maven创建或者使用Spring Initializr:


第三步:服务提供方dubbo-provider相关配置

在pom.xml文件中添加dubbo使用依赖,以及zookeeper的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringBoot-Dubbo</artifactId><groupId>com.ly</groupId><version>0.0.1-SNAPSHOT</version></parent><groupId>com.qunhongtech</groupId><artifactId>dubbo-provider</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-customer</name><modelVersion>4.0.0</modelVersion><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.3.0.RELEASE</version></dependency><!--dubbo依赖--><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency><!--zookeeper客户端依赖--><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency></dependencies>
</project>
修改配置文件:application.yml
server:port: 8081 #Tomcat端口号
dubbo:application:name: dubbo-provider #应用名称protocol:name: dubboport: 20880 #dubbo服务暴漏的端口号registry:address: zookeeper://127.0.0.1:2181 #zookeeper服务的地址以及端口号
第四步:服务消费方dubbo-customer相关配置

在pom.xml文件中添加dubbo使用依赖,以及zookeeper的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>SpringBoot-Dubbo</artifactId><groupId>com.ly</groupId><version>0.0.1-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><groupId>com.ly</groupId><artifactId>dubbo-customer</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-customer</name><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.boot</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>0.2.0</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.13</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></exclusion><exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId></exclusion></exclusions></dependency></dependencies>
</project>
修改配置文件:application.yml
server:port: 8082 #Tomcat端口号
dubbo:application:name: dubbo-customer #应用名称registry:address: zookeeper://127.0.0.1:2181 #zookeeper服务的地址以及端口号
第五步:在dubbo-api中新建接口,并在dubbo-provider中实现

在dubbo-api中创建一个接口:HelloService,使用时需要在dubbo-provider以及dubbo-customer
中添加依赖:
public interface HelloService {String hello();}
在dubbo-provider中实现HelloService接口:

创建接口实现类HelloServiceImpl用来实现HelloService接口:实现代码如下,注意这里使用的注解@Service不是用spring的service注解,而是使用的dubbo的注解:import com.alibaba.dubbo.config.annotation.Service;
@Service //发布服务
public class HelloServiceImpl implements HelloService {@Overridepublic String hello() {return "Hello World...";}
}
并在启动器DubboProviderApplication中添加注解:@EnableDubbo

第六步:试着在dubbo-customer中远程调用HelloService接口:

新建一个HelloController类,代码如下,想要引入远程服务时需要使用dubbo的Reference注解:
@RestController
public class HelloController {@Reference //引用服务private HelloService helloService;@GetMapping("/hello")private String hello(){System.out.println("Hello World...");return helloService.hello();}}
测试代码,先启动服务提供方:dubbo-provider,发生错误,因为我们还没有启动zookeeper

下载安装zookeeper,打开连接选择合适的版本直接安装即可:https://zookeeper.apache.org/releases.html


下载下来的压缩包可以在linux或windows中使用,这里以windows为例:

解压压缩包,找到bin目录并打开:
目录如下,找到zkServer.cmd,双击启动即可:

运行结果如下:

再次依次启动:服务提供发:dubbo-provider,服务消费方:dubbo-customer,打开浏览器进行测试,结果如下:

更多Java学习指南以及最新项目场景题,需要的宝子
Java学习包传送门
相关文章:
SpringBoot+Dubbo+zookeeper 急速入门案例
项目目录结构: 第一步:创建一个SpringBoot项目,这里选择Maven项目或者Spring Initializer都可以,这里创建了一个Maven项目(SpringBoot-Dubbo),pom.xml文件如下: <?xml versio…...
pdf.js默认显示侧边栏和默认手形工具
文章目录 默认显示侧边栏(切换侧栏)默认手形工具(手型工具) 大部分的都是在viewer.mjs中的const defaultOptions 变量设置默认值,可以使用数字也可以使用他们对应的变量枚举值 默认显示侧边栏(切换侧栏) 在viewer.mjs中找到defaultOptions,大概在732行,或则搜索sidebarViewOn…...
数据库第三次作业
第一题: 学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:S…...
渗透利器:YAKIT 工具-基础实战教程.
YAKIT 工具-基础实战教程. YAKIT(Yak Integrated Toolkit)是一款基于Yak语言开发的集成化网络安全单兵工具,旨在覆盖渗透测试全流程,提供从信息收集、漏洞扫描到攻击实施的自动化支持。其核心目标是通过GUI界面降低Yak语言的使用…...
变分边界详解
起因 当时看VAE论文时有这么一段,但是看完直接一头雾水,这都那跟哪,第一个公式咋做的变换就变出那么一堆。网上搜了很多博客都语焉不详,只好自己来写一篇,希望能解答后来人的疑惑。 公式1 参考文章:证据…...
计算机毕业设计——Springboot餐厅点餐系统
🎉**欢迎来到琛哥的技术世界!**🎉 📘 博主小档案: 琛哥,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 琛哥在深度学习任务中展现出卓越的能力&a…...
Dav_笔记14:优化程序提示 HINTs -3
查询转换的提示 以下每个提示都指示优化程序使用特定的SQL查询转换: ■NO_QUERY_TRANSFORMATION ■USE_CONCAT ■NO_EXPAND ■REWRITE和NO_REWRITE ■MERGE和NO_MERGE ■STAR_TRANSFORMATION和NO_STAR_TRANSFORMATION ■事实和NO_FACT ■UNNEST和NO_UNNEST…...
Makefile的用法及算法应用
编译的过程 算法:解决特定问题的求解步骤 算法的设计 1.正确性 语法正确合法的输入能得到合理的结果对非法的输入,给出满足要求的规格说明对精心选择,甚至刁难的测试都能正常运行,结果正确 2.可读性,便于交流&…...
伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries
本系列为加州伯克利大学著名 Python 基础课程 CS61A 的课堂笔记整理,全英文内容,文末附词汇解释。 目录 01 Strings 字符串 Ⅰ Strings are An Abstraction. Ⅱ Strings Literals have Three Forms Ⅲ String are Sequences 02 Dictionaries 字典 …...
机器学习 - 理解偏差-方差分解
为了避免过拟合,我们经常会在模型的拟合能力和复杂度之间进行权衡。拟合能力强的模型一般复杂度会比较高,容易导致过拟合。相反,如果限制模型的复杂度,降低其拟合能力,又可能会导致欠拟合。因此,如何在模型…...
Springboot引入(集成)Mybatis-plus
1、添加依赖 <!--mysql数据库--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency><!--mybatis-plus--><dependency><groupI…...
stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)
一、问题描述 最近用stmf429单片机作为TCP服务端遇到一个问题,就是客户端特别频繁的发送消息,过一段时间以后,客户端的请求不再被客户端接收到,而且服务器端监控的掉线回调函数也不会被调用,好像这个连接就凭空的消失…...
java项目之基于SSM会议管理系统的设计与实现源码(ssm+mysql)
项目简介 基于SSM会议管理系统的设计与实现实现了以下功能: 基于SSM会议管理系统的设计与实现的主要使用者分为:管理员登录后修改个人的密码。用户管理中,对公司内的用户进行管理,包括会议管理员和员工,管理部门信息…...
腿足机器人之二- 运动控制概览
腿足机器人之二运动控制概览 高层运动规划MPCRL 中层逆运动学和逆动力学底层执行器控制传感器校正 上一篇博客是腿足机器人的骨架和关节的机械和电气组件,关节不仅需要通过机械设计实现复杂的运动能力,还必须通过电子组件和控制系统来精确控制这些运动。…...
【MySQL】基础篇
1. MySQL中的NULL值是怎么存放的? MySQL的compact行格式中会用【NULL值列表】来标记值为NULL的列,NULL值不会存储在行格式中的真实数据部分。 NULL值列表会占用1字节空间,当表中所有字段都被定义成NOT NULL,行格式中就不会有NULL值…...
vscode环境搭建
目录 一、安装VSCode 二、安装Python 三、安装Anaconda(可选,但推荐) 四、安装深度学习相关库 五、配置VSCode 六、 结果可视化 一、安装VSCode 访问官网下载:从VSCode官方网站下载适合你操作系统的安装包。安装:运行安…...
tp whereOr用法2
有时候会用到多个whereOr 可以用闭包来完成查询 Db::name(table_name)->whereOr([[age,null,],[age,,]])->select();Db::name(table_name)->whereOr([[birthday,null,],[birthday,,]])->select();这两个是OR(或)关系 Db::name(table_name)->whereOr([[age,nul…...
前端面试题目---页面抖动的原因、如何避免、如何解决
前端页面抖动是一个常见且影响用户体验的问题,下面将从抖动发生的场景、解决办法以及预防措施三个方面进行详细阐述。 页面抖动发生的场景 1. 元素尺寸动态变化 图片加载:当页面中图片的宽高没有预先设定,在图片加载完成后,其实…...
Spring Boot整合DeepSeek实现AI对话(API调用和本地部署)
本篇文章会分基于DeepSeek开放平台上的API,以及本地私有化部署DeepSeek R1模型两种方式来整合使用。 本地化私有部署可以参考这篇博文 全面认识了解DeepSeek利用ollama在本地部署、使用和体验deepseek-r1大模型 Spring版本选择 根据Spring官网的描述 Spring AI是一…...
DeepSeek 的 API 服务引入 WPS Office
以下是将 DeepSeek 的 API 服务引入 WPS Office 的通用集成教程。以调用 DeepSeek 的 AI 功能(如文本生成、数据分析)为例,假设你需要通过 WPS 的宏或插件调用外部 API: 准备工作 注册 DeepSeek 账号并获取 API Key 访问 DeepSe…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
如何在最短时间内提升打ctf(web)的水平?
刚刚刷完2遍 bugku 的 web 题,前来答题。 每个人对刷题理解是不同,有的人是看了writeup就等于刷了,有的人是收藏了writeup就等于刷了,有的人是跟着writeup做了一遍就等于刷了,还有的人是独立思考做了一遍就等于刷了。…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
【Linux】Linux 系统默认的目录及作用说明
博主介绍:✌全网粉丝23W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...
