SpringCloud_1:父子工程创建

发布时间:2026/9/29 8:41:44

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/9/19 19:26:00

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

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

2026/9/29 8:39:28

Go 高性能 Web 实战:fasthttp vs net/http 全景对比

Go 高性能 Web 实战:fasthttp vs net/http 全景对比性能敏感的 Web 项目常问:"选 net/http 还是 fasthttp?"本文从 API、特点到 benchmark 一次性解答。一、net/http 主流 import "net/http"http.HandleFunc("/hell…

2026/9/29 8:39:28

用 WeChatMsg 导出微信历史并生成年度报告

用 WeChatMsg 导出微信历史并生成年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg WeChatMsg 是…

2026/9/29 8:39:28

Java操作Redis:客户端选型、序列化与分布式锁实战指南

最近在折腾 Redis 相关的项目,发现不少同行在 Java 操作 Redis 客户端这块还在"能用就行"的阶段。Jedis、Lettuce、Redisson 到底怎么选?连接池参数调多少合适?序列化器的坑踩了也不知道怎么排查?这些都是实际开发里绕不…

2026/9/29 8:34:27

【Codex教育管理系统】接入音频转录服务维护转写参数与音频文件入口

音频转录服务在教育管理系统中的价值,在于围绕 音频转录服务 的核心字段、接口动作和页面状态维护业务数据。模块需要和现有接口、权限、页面状态保持一致,不能只写成普通后台表格。 本文基于 系统功能/三方服务_音频转录服务 对应源码,把业务目标拆成模型字段、接口规则、页…

2026/9/28 3:03:23

东莞市品牌网站建设报价常见报错与解决

东莞品牌网站建设报价单背后:一份保姆级建站教程避坑实录 网站做好了没人访问,这大概是很多老板最头疼的事。花了大几万做的品牌站,上线后流量惨淡,比路边摊还冷清。别急着骂外包公司,很多“东莞品牌网站建设报价”里藏着不少猫腻,比如用模板站冒充定制…

2026/9/28 6:05:15

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/29 7:00:49

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 0:04:04

AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成

1. 为什么AI Evals值得你花时间搞明白做LLM应用的人,迟早会撞上同一堵墙:模型输出飘忽不定,今天答得好好的,明天换个问法就胡说八道。你改了一版提示词,感觉好像好了点,但到底好了多少?说不清。…

2026/9/29 0:04:04

Java采购管理系统实战:从数据库设计到事务一致性

简介:这是一套面向Java Web初学者与课程设计者的采购管理系统完整源码,采用JSP技术搭建,配合MySQL数据库,用于解决企业采购信息的管理问题,适合作为毕业设计、课程大作业或进销存类项目的参考模板。系统实现了用户登录…

2026/9/29 3:53:39

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/26 19:58:38

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/29 6:36:14

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑