ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

用豆包辅助从头开始学习java spring cloud(一)

2026/8/28 17:42:43 拓冰建站 浏览量
用豆包辅助从头开始学习java spring cloud(一) 曾经学习过java基础但是没有做过任何程序spring框架听过简单的看过但是没有学习也没有使用过不过因为之前也是计算机专业的所以把开发环境顺利的搭建好了目前的开发环境是jdk-8u311-windows-x64、apache-maven-3.8.6-bin、VSCodeUserSetup-x64-1.127.0、node-v18.20.8-x64、idea原本电脑就有不知道什么版本。现在开始想学习spring cloud计划按照豆包的规划一步步的学习看看按照豆包的规划的学习怎么样。现在开始第一天的学习首先让豆包生成了一份学习计划如下因为之前跟豆包提问了很多关于继承、接口、多态的问题所以豆包认为我有java基础。# Spring Cloud 零基础完整3个月落地学习计划2026最新版 ## 前置重要说明 1. **学习顺序原则**先夯实Spring Boot → 微服务理论 → Spring Cloud原生规范 → Spring Cloud Alibaba国内企业主流→ 全栈项目整合 → 运维面试拔高 2. **版本选型直接照抄** - Spring Boot3.2.x - Spring Cloud 官方版本2023.0.x代号 Leyton - Spring Cloud Alibaba2023.0.1.2 3. **核心概念一句话分清** - Spring Cloud**微服务架构规范**定义整套微服务需要哪些能力 - Spring Cloud Netflix第一代实现Eureka、Hystrix已停止维护仅做了解 - Spring Cloud Alibaba第二代主流落地实现Nacos、Sentinel、Seata国内90%公司在用重点学 --- ## 第一阶段前置基础补全7~10天必须通关否则Cloud寸步难行 ### 必备技术清单你已有Java基础重点攻坚下面4项 1. **Spring Boot 深度吃透重中之重5天** - 核心自动配置原理、Maven父子工程聚合结构Cloud全部用多模块Maven、yml/properties配置、Configuration、Bean、Conditional注解 - 实操搭建单体Web项目、MyBatis-Plus操作MySQL、全局异常处理、统一返回结果集 - 产出一个完整Spring Boot用户CRUD单体项目 2. **工具与中间件基础2天** - Maven父子模块、dependencyManagement版本锁定Cloud核心工程结构 - MySQL多库设计、外键、事务ACID - Redis基础命令、缓存穿透/击穿/雪崩解决方案微服务高频 3. **架构理论铺垫2天** - 单体架构 → 垂直拆分 → SOA → **微服务架构**演进过程 - 微服务优缺点、服务拆分原则单一职责、按业务域拆分 - RESTful API规范、HTTP接口调用、Postman测试 ### 阶段验收 能独立创建Maven父工程多个子模块用Spring Boot写接口理解为什么需要微服务拆分。 --- ## 第二阶段微服务架构理论 Spring Cloud原生规范2周14天 ### 第1周微服务通信与注册发现核心7天 #### Day1-2 微服务远程调用三种方式 1. RestTemplate底层HTTP调用 2. OpenFeign声明式接口调用企业标准 3. LoadBalancer 负载均衡替代老旧Ribbon **实操**搭建订单服务、用户服务两个Boot模块订单调用用户接口。 #### Day3-5 服务注册与发现 1. Eureka仅了解停更组件知道原理即可 2. Consul简单过 3. 核心吃透**NacosAlibaba** - Nacos下载启动、注册中心控制台、服务上下线感知、集群部署 - 注解EnableDiscoveryClient、权重负载、健康检查 #### Day6-7 API网关 Gateway必考核心 - 作用路由转发、鉴权、限流、跨域、请求过滤 - 配置方式yml配置、代码自定义路由、全局过滤器GlobalFilter - 实操Gateway网关统一代理所有微服务接口 ### 第2周配置中心、熔断降级、链路追踪7天 1. 分布式配置中心 - Spring Cloud Config原生了解 - Nacos Config重点一套Nacos同时做注册配置中心动态刷新配置RefreshScope 2. 服务容错熔断 - Resilience4jSpring官方新容错组件 - Hystrix淘汰仅学习降级、熔断、舱壁模式思想 3. 分布式链路追踪 Sleuth Zipkin - 微服务调用链条日志排查定位超时、报错节点 ### 阶段产出 6个独立微服务模块注册中心Nacos、网关Gateway、配置中心、用户、订单、支付服务模块间正常远程调用、配置动态更新、异常自动熔断。 --- ## 第三阶段Spring Cloud Alibaba 企业级核心组件3周21天最核心落地内容 互联网公司真实技术栈重点全部动手敲代码 ### 第1周Nacos 深度吃透7天 1. Nacos注册中心持久化、命名空间、环境隔离dev/test/prod 2. Nacos配置中心多环境配置、共享配置、配置灰度发布、监听回调 3. Nacos集群搭建模拟生产高可用 ### 第2周流量管控 分布式事务7天 1. **Sentinel 流量防卫兵重点** - 熔断、降级、限流QPS限流、链路限流、热点参数限流 - Sentinel控制台可视化配置、规则持久化、网关Gateway集成Sentinel限流 2. **Seata 分布式事务微服务最难考点** - 为什么需要分布式事务跨库/跨服务事务不一致 - AT模式自动事务99%场景使用、TCC模式原理 - 实操下单扣库存、扣余额跨三个服务保证数据一致性 ### 第3周消息队列、Dubbo RPC、完整生态整合7天 1. RocketMQ 消息队列Alibaba生态 - 异步解耦、最终一致性事务消息、削峰填谷 2. Dubbo RPC高性能调用替代Feign - DubboNacos注册中心对比HTTP与RPC调用差异 3. 全套组件串联复盘 Gateway网关 → Nacos注册配置 → OpenFeign/Dubbo调用 → Sentinel限流 → Seata事务 → RocketMQ异步 ### 阶段验收 独立搭建一套**标准Spring Cloud Alibaba企业微服务架构**处理分布式事务、高并发限流、动态配置全部落地。 --- ## 第四阶段大型综合实战项目2周14天求职/工作核心竞争力 ### 项目选题推荐2套循序渐进 #### 项目1简易电商微服务基础版1周 拆分模块 1. 网关模块 gateway 2. 公共依赖模块 common实体、工具类、统一返回 3. 用户服务 user-service登录、注册、权限 4. 商品服务 product-service库存管理 5. 订单服务 order-serviceSeata分布式事务 6. 支付服务 pay-service 7. Nacos注册配置、Sentinel限流、Zipkin链路追踪 #### 项目2后台管理系统贴合岗位1周加分项 业务模块 - 机构管理、账户管理、交易流水、权限菜单、日志审计 - 技术亮点 1. Gateway网关做接口权限拦截、IP白名单 2. Nacos多环境隔离开发/测试/生产 3. Sentinel对核心交易接口限流熔断防止雪崩 4. Seata保证转账跨账户分布式事务 5. Redis缓存热点账户数据 ### 项目必须完成的工程规范 1. Maven聚合父子工程拆分版本统一管理 2. 全局统一异常处理器、统一JSON返回体 3. 所有组件yml配置抽离到Nacos远程配置 4. 写完整README文档环境说明、启动顺序、接口文档 --- ## 第五阶段进阶拔高 运维部署 面试冲刺1周7天 ### 1. 云原生容器部署企业必备 - Docker打包每个微服务为镜像、Docker Compose一键启动整套微服务集群 - 简单了解K8s基础概念不用深挖知道用途即可 ### 2. 监控运维体系 - Spring Boot Admin 微服务健康监控面板 - Prometheus Grafana 指标监控CPU、内存、QPS、异常率 ### 3. 高频面试题梳理重点整理 1. 微服务拆分原则、优缺点 2. Nacos vs Eureka区别、AP/CP架构 3. Sentinel限流规则、熔断降级触发条件 4. Seata AT模式执行原理、分布式事务解决方案 5. Gateway网关过滤器执行流程 6. OpenFeign负载均衡底层原理 7. 微服务雪崩效应怎么预防 --- # 总周期汇总按每日2小时业余学习 1. 前置Spring Boot基础10天 2. Spring Cloud原生组件规范14天 3. Spring Cloud Alibaba核心企业组件21天 4. 两大实战项目落地14天 5. 部署、监控、面试复盘7天 **合计66天 ≈ 2个半月完整精通可以直接上手微服务项目开发** --- # 避坑关键规则零基础必看 1. **不要跳过Spring Boot直接学Cloud**Cloud所有组件都基于Boot自动配置跳过会全程看不懂配置 2. **不要死磕淘汰组件**Eureka、Hystrix只看原理主力投入Nacos、Sentinel、Seata 3. **每学一个组件必须敲代码**微服务重在工程搭建只看视频不写项目等于0 4. **优先学Spring Cloud Alibaba**国内职场、金融行业全部在用原生Netflix版本仅做理论了解。我不知道这份计划好还是不好不过还是先投入学习下面进入第一天的学习# Day1 第一天学习任务总时长23小时不搞复杂落地看得见成果 ## 核心目标 1. 搞懂**微服务到底是什么、为什么要用**建立宏观认知 2. 学会搭建 Spring Cloud Alibaba 最核心结构**Maven父子聚合工程** 3. 搭建第一个 Spring Boot 子模块并运行成功 --- ## 第一部分理论认知30分钟 ### 1. 架构演进只记4个阶段 1. 单体架构所有代码写在一个项目里小系统好用迭代、并发、发布卡死 2. 垂直拆分拆成多个单体项目用户系统、订单系统解决一部分问题但重复代码多 3. SOA架构用ESB总线做服务调用笨重、中心化瓶颈 4. **微服务架构**按业务领域高度拆分每个服务独立部署、独立数据库、独立扩容通过注册中心发现、远程调用通信 ### 2. 三个名词死记后面天天用 1. **Spring Boot**快速开发单体Java WebCloud的地基必须熟练 2. **Spring Cloud**一套微服务**标准规范**定义了注册中心、网关、熔断、配置中心该怎么玩 3. **Spring Cloud Alibaba**阿里基于Cloud规范做的**具体实现**Nacos、Sentinel、Seata国内企业、金融系统主流技术栈 ### 3. 微服务核心5大组件先混个脸熟不用深究 - Nacos注册中心 配置中心最核心 - OpenFeign服务之间远程调用 - GatewayAPI网关统一入口 - Sentinel限流、熔断、降级防止服务雪崩 - Seata解决跨服务、跨数据库的**分布式事务**银行转账必用 --- ## 第二部分实操重头戏2小时今天最重要 ### 步骤1环境检查5分钟 确认本地装好 1. JDK 1.8配置好环境变量cmd java -version验证 2. Maven 3.6 配置阿里云镜像关键否则依赖下载卡死 3. IDEA 开发工具 4. MySQL 8.0后面用今天可以不启动 Maven settings.xml 镜像粘贴直接复制 xml mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror ### 步骤2在IDEA创建父工程 parent40分钟 1. IDEA 新建 Maven 项目**打包方式 packaging pom** 2. 把我上一轮发给你的**父工程完整pom.xml**全部替换进去 3. 理解两个关键点 - dependencyManagement只锁定版本子模块不用写版本号统一管控 - 父工程本身不能运行只用来管理依赖、统一版本 ### 步骤3创建第一个子模块 common 公共模块30分钟 1. 右键父工程 → New → Module → Maven 2. 自动继承父工程pom里只有parent标签 3. common作用放统一返回结果类、全局异常、工具类、实体类所有业务服务依赖它 今天不用写复杂代码只建空模块看结构层级即可 ### 步骤4创建第一个可运行微服务 demo-service40分钟 1. 继续在父工程下新建子模块 demo-service 2. pom引入 spring-boot-starter-web 依赖 3. 编写启动类 java package com.bank.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 4. resources 新建 application.yml yaml server: port: 8081 spring: application: name: demo-service 5. 写一个测试Controller java RestController public class HelloController { GetMapping(/hello) public String hello(){ return 第一个微服务模块启动成功; } } 6. 运行启动类浏览器访问 http://localhost:8081/hello ✅ 能输出文字 今天任务圆满完成 --- ## 第三部分今日复盘明天预习10分钟 ### 今天必须掌握的3个知识点 1. 父工程 packaging 必须是 pom用来做版本统一管理 2. 子模块通过 parent 继承父工程依赖简化版本维护 3. SpringBoot启动注解 SpringBootApplication 作用 ### 明天要学内容预告 1. Spring Boot 基础复习yml配置、Lombok、统一返回体封装 2. 搭建第二个服务 user-service用 RestTemplate 实现两个服务互相调用微服务远程通信入门 --- ## 极简执行顺序抄作业 1. 看微服务架构演进理论 30min 2. 配置Maven阿里云镜像 3. 创建父工程 → common模块 → demo-service运行测试 4. 浏览器访问接口验证成功 如果操作哪一步报错比如Maven依赖爆红、启动报错直接把pom或者报错截图发我我给你当场修正。步骤一中找到了本地settings.xml使用记事本打开但是里面太多太多被注释的内容结果第一次好像没有设置正确mirrors !-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | mirror idaliyunmaven/id mirrorOfcentral/mirrorOf name阿里云公共仓库/name urlhttps://maven.aliyun.com/repository/public/url /mirror mirror idmirrorId/id mirrorOfrepositoryId/mirrorOf nameHuman Readable Name for this Mirror./name urlhttp://my.repository.com/repo/path/url /mirror -- mirror idmaven-default-http-blocker/id mirrorOfexternal:http:*/mirrorOf namePseudo repository to mirror external repositories initially using HTTP./name urlhttp://0.0.0.0//url blockedtrue/blocked /mirror /mirrors这个坑在后面更新maven的时候才发现现在自以为正确的先向下了。看着步骤二结果因为创建工程的部分看不懂于是提问“步骤 2在 IDEA 创建父工程 parent怎么创建具体步骤是什么”。根据提示创建工程如下根据步骤说明删除src文件夹修改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.learnspring.cloud/groupId artifactIdlearn-spring-cloud-parent/artifactId version1.0.0/version name微服务父工程/name descriptionSpring Cloud Alibaba 聚合父工程/description !-- 核心父工程打包类型必须为pom -- packagingpom/packaging !-- 统一版本常量 -- properties java.version1.8/java.version maven.compiler.source${java.version}/maven.compiler.source maven.compiler.target${java.version}/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding !-- 锁定全套版本JDK8最稳定组合 -- spring.boot.version2.7.18/spring.boot.version spring.cloud.version2021.0.8/spring.cloud.version spring.cloud.alibaba.version2021.0.5.0/spring.cloud.alibaba.version mysql.version8.0.33/mysql.version mybatis.plus.version3.5.3.1/mybatis.plus.version druid.version1.2.20/druid.version /properties !-- 依赖版本统一管理子模块无需写版本号 -- dependencyManagement dependencies !-- SpringBoot 版本锁定 -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-dependencies/artifactId version${spring.boot.version}/version typepom/type scopeimport/scope /dependency !-- Spring Cloud 原生规范 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-dependencies/artifactId version${spring.cloud.version}/version typepom/type scopeimport/scope /dependency !-- Spring Cloud Alibaba 核心 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-dependencies/artifactId version${spring.cloud.alibaba.version}/version typepom/type scopeimport/scope /dependency !-- 数据库组件 -- dependency groupIdcom.baomidou/groupId artifactIdmybatis-plus-boot-starter/artifactId version${mybatis.plus.version}/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version${mysql.version}/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-starter/artifactId version${druid.version}/version /dependency /dependencies /dependencyManagement !-- 所有子模块自动继承的公共依赖 -- dependencies dependency groupIdorg.projectlombok/groupId artifactIdlombok/artifactId /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependency /dependencies !-- 编译插件 -- build plugins plugin groupIdorg.apache.maven.plugins/groupId artifactIdmaven-compiler-plugin/artifactId version3.8.1/version configuration source${java.version}/source target${java.version}/target encodingUTF-8/encoding /configuration /plugin /plugins /build /project开始创建子模块在最顶层的learn-spring-cloud-parent工程上点鼠标右键new-module发现有点不太懂于是截图再次提问最后创建子模块如下创建模块后修改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 parent groupIdcom.learnspring.cloud/groupId artifactIdlearn-spring-cloud-parent/artifactId version1.0.0/version relativePath../pom.xml/relativePath /parent artifactIddemo-service/artifactId namedemo演示微服务/name properties maven.compiler.source8/maven.compiler.source maven.compiler.target8/maven.compiler.target project.build.sourceEncodingUTF-8/project.build.sourceEncoding /properties dependencies !-- SpringBoot Web 依赖版本由父工程统一管理不用写version -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web/artifactId /dependency /dependencies /project修改好后如果有红色波浪线就打开右侧的m标识点刷新后就正常了。展开demo-service→src→main→java在 java 文件夹上右键 → New → Package输入包名com.learnspring.cloud在这个包里面新建启动类DemoApplication.java创建后如下配置yml文件进入demo-service/src/main/resources文件夹新建文件application.yml写入server: port: 8080 spring: application: name: demo-service写测试接口在com.learnspring.cloud下新建子包controller创建HelloController.javapackage com.learnspring.cloud.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; RestController public class HelloController { GetMapping(/hello) public String sayHello(){ return 恭喜Maven父子聚合工程搭建完成第一个微服务成功启动; } }最后运行测试右键DemoApplication的 main 方法 → Run打开浏览器访问http://localhost:8080/hello发现运行成功虽然运行成功了但是点run的时候有个弹出窗口于是截图询问反馈为现在可以不用管它不影响当前项目启动和运行。这个提示只是 Lombok 注解处理器没开启你目前 demo-service 里还没用到Data、Slf4j这类 Lombok 注解直接启动项目完全没问题。于是暂时先忽略。run界面截止当前提示我已完成第一天学习内容。小结今天搭建了一个父工程和一个子工程父工程负责统一管理所有依赖的版本子工程作为业务模块编写了一个spring boot启动类yml配置、测试了一个controller并成功运行了这个web服务。计划下一次学习创建第二个服务学习RestTemplate,实现第一个服务调用第二个服务的接口完成微服务之间的调用创建一个通用模块用来返回通用结果。