发布时间:2026/8/11 18:52:25
SpringCloud_1:父子工程创建 目录一、在SpringBoot上建立SpringCloud二、创建父子工程三、每个模块升级成SpringBootWeb项目四、总结一、在SpringBoot上建立SpringCloud我们前边创建过SpringBoot项目都会引入一个前缀为springboot-starter-的依赖例如创建一个项目pom文件中就包含parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version4.0.2/version relativePath/ !-- lookup parent from repository -- /parent我这里的springBoot版本号是4.0.2,我们ctrl点击artifactId后逐层进入父pom会看到一个巨大的“版本仲裁中心”这里存放了很多依赖的版本号这也让我们先前在引入依赖时没有去指定版本号因为这里面存放的就是推荐版本。比如我们熟知的mysql依赖但是没有springcloud依赖的版本但是springcloud又是在springBoot之上建立的。所以在springboot项目上创建springcloud项目需要引入springcloud依赖。这个时候我们有多种选择可以选择引入官方SpringCloud、SpringCloud Alibaba、等其他微服务生态。他们都集成了所必须的组件例如服务注册和发现等。阿里巴巴生态是国内的主流选择集成Nacos、Sentinel等阿里开源组件。如果你想要使用netflix OSS组件那么你也可以引入官方Spring Cloud.更多时候我们都是结合着用的。值得注意的是我们此时导入的是一个SpringCloud生态是一个BOM物料清单而非jar包。需要将其放到dependencyManagement节点下这里面并不含有任何业务代码只是一份依赖清单。所以导入时要指定类型为pom明确这是个“元数据”不是代码。其次就是作用域为import,这样只要子项目引入后就能把仓库里面所有的版本声明全部复制到当前项目的dependencyManagement中了。不同的作用域有不同作用作用域编译测试运行compile(默认)生效生效生效test生效provided生效生效runtime生效生效import(只能给BOM用)---SpringBoot版本不同需要引入的cloud依赖版本也不同。针对这个问题可以查看官方手册。官方SpringCloud版本SpringCloud官方阿里巴巴SpringCloud版本SpringCloud阿里巴巴dependencyManagement dependencies !--官方SpringCloud-- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version2025.1.0/version typepom/type scopeimport/scope /dependency !--阿里巴巴SpringCloud-- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version2025.1.0.0/version typepom/type scopeimport/scope /dependency /dependencies /dependencyManagement当你引入了任何一个他们包含的jar包时才可以使用同样的方式ctrl点击artifactId看到一些版本配置信息这些都是推荐的版本。里面有我们经常使用的Openfeign和Gateway,阿里巴巴BOM中还有我们会使用的nacos等组件。二、创建父子工程之前我们的应用程序是单体架构现在我们需要把它拆分成分布式微服务架构。这样做的好处是将服务进行拆分分别部署到不同服务器上减轻单个服务器的压力单个服务发生宕机不会导致整体服务不可用提高了稳定性按照业务拆分进行解耦降低业务耦合在多人开发中有利于分工合作。例如博客服务可以简单分为这么三类用户服务博客服务和网关服务。用父子工程的方式将其管理起来就构成了分布式架构。这三个服务可以分别部署在不同的机器上和不同的端口上。Common作为公共组件为其他服务提供工具。本身不是服务不含启动类。到时候每个服务的jar包打完都会含有一个common jar包用来为自己的程序服务。我们先创建父工程创建一个Maven空项目删除掉src目录因为我们并不需要在父工程下写任何业务代码,所以父工程必须打包成pom。在pom文件中添加如下配置这样方便我们管理依赖不会发生版本冲突。?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd modelVersion4.0.0/modelVersion groupIdcom.miao/groupId artifactIdspring-cloud-blog/artifactId version1.0-SNAPSHOT/version !-- 声明父工程的打包方式为pom -- packagingpom/packaging modules moduleblog-info/module moduleuser-info/module modulegateway-service/module moduleblog-common/module /modules !-- 完善依赖 -- parent groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-parent/artifactId version3.1.6/version relativePath/ !-- lookup parent from repository -- /parent properties maven.compiler.source17/maven.compiler.source maven.compiler.target17/maven.compiler.target java.version17/java.version mybatis.version3.0.3/mybatis.version mysql.version8.0.33/mysql.version mysql.plus.version3.5.5/mysql.plus.version spring-cloud.version2022.0.3/spring-cloud.version spring-cloud-alibaba.version2022.0.0.0-RC2/spring-cloud-alibaba.version /properties !--所有子项目都会继承的依赖-- dependencies dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId optionaltrue/optional /dependency /dependencies !-- 依赖管理 不会给父工程、子模块引入任何 jar 包 只定义好「依赖坐标 固定版本」 子模块需要用到某个依赖时只需要写 groupId、artifactId省略 version自动继承父工程这里约定好的版本 -- dependencyManagement dependencies dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring-cloud.version}/version typepom/type scopeimport/scope /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring-cloud-alibaba.version}/version typepom/type scopeimport/scope /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter/artifactId version${mybatis.version}/version /dependency dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-spring-boot3-starter/artifactId version${mysql.plus.version}/version /dependency dependency groupIdcom.mysql/groupId artifactIdmysql-connector-j/artifactId version${mysql.version}/version /dependency dependency groupIdorg.mybatis.spring.boot/groupId artifactIdmybatis-spring-boot-starter-test/artifactId version${mybatis.version}/version scopetest/scope /dependency /dependencies /dependencyManagement /project父工程打包成pom后这样指定的modules才会被识别到注意先创建模块才会出现modules这样整个组织结构才得以建立。我们还在pom文件中提前约定了版本号这是一组非常稳定的组合后续依赖均使用这组版本号不会导致混乱。需要注意父工程里的dependencies会被子项目所继承例如Lombok而dependencyManagement则不会被继承例如mybatis它只是声明了依赖信息包括版本号作用域等。后续子项目需要引入依赖时才会被引入这个时候就会按照我们约定好的配置去引入依赖。接下来只要按照我们上面的模块名创建子工程即可。可以发现子模块的Lombok依赖被隐式继承了自身pom文件中无但是依赖库里能看到。如此反复创建得到如下的目录配置文件也会显示父子关系三、每个模块升级成SpringBootWeb项目此时我们需要对网关服务、用户服务和博客服务添加SpringWeb依赖并且添加配置信息和启动类。dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId /dependencyweb来自springboot父工程的起步依赖我们的springboot版本是3.1.6所以用的是web,如果是4.0.x则要改成mvc.随后创建配置文件指定端口号那需不需要指定IP地址呢每个服务确实由IP地址端口号确定的。但是我们完全没必要去指定我们会把服务注册到nacos当我们程序跑起来时会自动向nacos上报IP地址和端口号所以不用担心别的服务找不到我们。例如先做这样的配置后续的话需要配置很多东西目前配置先这样写。接着添加启动类。然后测试是否可以成功运行控制台显示成功运行。这样我们所有的工作就做完了。后续的博客业务就在这个子目录下完成。四、总结到目前为止我们学习了分布式微服务的创建流程重要的是父项目如何管理依赖后续不会发生依赖冲突。BOM需要在dependenceManagement中声明类型为pom文件作用域为import,主要注意这些就能规避大部分错误。

相关新闻

2026/8/11 18:52:25

基于Hadoop的空气质量大数据监测系统设计与实现

1. 项目背景与核心价值 空气质量监测与分析是智慧城市建设中的重要环节。传统的气象站监测方式存在覆盖范围有限、数据更新滞后等问题,而基于互联网的公开数据源结合大数据技术,能够实现更全面、实时的空气质量评估体系。 这个项目的核心价值在于&#…

2026/8/11 19:22:26

什么是防爆门

防爆门:高危场所的安全屏障在化工、煤矿、储能、危化仓库等存在爆炸风险的场所,普通门窗无法抵御爆炸瞬间产生的冲击波、高温火焰与高速飞溅碎片,防爆门(抗爆门)作为特种防护构件,承担着抵御爆炸冲击、阻隔…

2026/8/11 19:22:26

相位差造就螺旋电场:一文读懂天线极化的底层奥秘

90相位差如何让直线振荡变为旋转螺旋——从线极化到圆极化的完整拆解在无线通信领域,频率、功率、增益是大家耳熟能详的关键参数,却很少有人重视天线极化这一决定通信成败的核心要素。小到无人机图传、GPS 定位,大到卫星通联、深空探测&#…

2026/8/11 19:22:26

Style2Paints V4.5:如何用AI将草图秒变专业彩图的终极指南

Style2Paints V4.5:如何用AI将草图秒变专业彩图的终极指南 【免费下载链接】style2paints sketch style paints :art: (TOG2018/SIGGRAPH2018ASIA) 项目地址: https://gitcode.com/gh_mirrors/st/style2paints 在数字绘画的世界里,你是否曾为繁…

2026/8/11 19:22:26

终极窗口管理方案:3分钟学会强制调整任意软件界面大小

终极窗口管理方案:3分钟学会强制调整任意软件界面大小 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为老旧软件界面太小而烦恼吗?是否经常遇到游戏窗…

2026/8/11 3:03:40

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 5:34:14

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/11 0:00:39

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:39

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…