# SpringBoot-Labs **Repository Path**: KyleLuo/SpringBoot-Labs ## Basic Information - **Project Name**: SpringBoot-Labs - **Description**: 一个涵盖六个专栏:Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式消息队列、分布式事务的仓库。希望胖友小手一抖,右上角来个 Star,感恩 1024 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: comment - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1511 - **Created**: 2022-04-20 - **Last Updated**: 2026-11-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBoot-Labs 基于 **Java 21 / Spring Boot 3.5.x** 的多模块示例仓库,覆盖 Spring Boot、Spring Cloud、Spring Cloud Alibaba 及常见中间件、RPC、监控等主题。每个模块聚焦一个技术点,可独立运行、独立验证。 > 本仓库 fork 自 [YunaiV/SpringBoot-Labs](https://github.com/YunaiV/SpringBoot-Labs),并已按 Spring Boot 3.x 基线做过清理:`javax.*` 已迁移为 `jakarta.*`;Netflix Eureka/Ribbon/Hystrix/Zuul、Sleuth、springfox、老版本 OAuth2 API 等无法在 Boot 3 下运行的示例已移除。 ## 环境要求 - JDK 21 - Maven 3.9+(仓库未附带 `mvnw`,使用 IDE 内置 Maven 或系统 Maven) - 版本基线以根 [`pom.xml`](pom.xml) 为准:Spring Boot `3.5.14`、Spring Cloud `2025.0.0`、Spring Cloud Alibaba `2025.0.0.0` ## 快速开始 仓库是多模块 Maven 工程。为减少模型加载与构建开销,根 `pom.xml` 的 `` 中**只启用了 `lab-core` 和 `lab-83`**,其余模块均以注释形式登记。 运行某个示例的步骤: 1. 打开根 [`pom.xml`](pom.xml),把目标模块对应的 `` 行取消注释; 2. 进入该模块目录,运行其中的 `Application` 启动类,或按模块内的 `.http` 文件、脚本进行验证; 3. 验证完成后建议重新注释,保持构建轻量。 依赖外部中间件的示例(Kafka、RabbitMQ、RocketMQ、Redis、Elasticsearch、MongoDB、Nacos、Apollo、ZooKeeper、Seata 等),需先在本机或容器中启动对应服务;连接信息写在模块自己的 `src/main/resources/application.yaml` 中,不要硬编码到 Java 代码里。 > 迁移说明:`tk.mybatis` 4.2.3 仍基于 `javax.persistence`,因此 `lab-12-mybatis-tk` 的实体注解保留 `javax.persistence`(纯 MyBatis 场景,不影响 Boot 3 运行);Spring Cloud Alibaba `2025.0.0.0` 的 BOM 已不提供 Dubbo Starter,`labx-07` 下依赖 Dubbo 的 demo02 REST/SpringMVC provider、demo03、demo04 继续保持移除。 ## 模块索引 状态说明:**启用** = 已在根 `pom.xml` 中打开;**停用** = 已登记但保持注释。 ### 公共 | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-core](lab-core) | 启用 | 各模块共享的基础代码 | ### Spring Boot 示例 **基础与 Web** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-05-benchmark-tomcat-jetty-undertow](lab-05-benchmark-tomcat-jetty-undertow) | 停用 | Tomcat、Jetty、Undertow 基准测试 | | [lab-06](lab-06) | 停用 | SpringMVC 与 WebFlux 基准测试 | | [lab-22](lab-22) | 停用 | 参数校验 Validation | | [lab-23](lab-23) | 停用 | SpringMVC Web 开发 | | [lab-24](lab-24) | 停用 | API 接口文档(SpringDoc、Knife4j、JApiDocs) | | [lab-25](lab-25) | 停用 | WebSocket | | [lab-26](lab-26) | 停用 | 分布式 Session | | [lab-27](lab-27) | 停用 | WebFlux 响应式编程 | | [lab-71-http-debug](lab-71-http-debug) | 停用 | IDEA HTTP Client 接口调试 | | [lab-73](lab-73) | 停用 | 国际化 i18n | **开发工具** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-48-hot-swap](lab-48-hot-swap) | 停用 | 热部署 | | [lab-49](lab-49) | 停用 | Lombok 消除冗余代码 | | [lab-55](lab-55) | 停用 | MapStruct 对象转换 | | [lab-69-proxy](lab-69-proxy) | 停用 | JDK、CGLIB 动态代理 | **数据访问** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-11-spring-data-redis](lab-11-spring-data-redis) | 停用 | Redis(Jedis、Redisson) | | [lab-12-mybatis](lab-12-mybatis) | 停用 | MyBatis、MyBatis-Plus、tk.mybatis | | [lab-13-spring-data-jpa](lab-13-spring-data-jpa) | 停用 | Spring Data JPA | | [lab-14-spring-jdbc-template](lab-14-spring-jdbc-template) | 停用 | JdbcTemplate | | [lab-15-spring-data-es](lab-15-spring-data-es) | 停用 | Elasticsearch | | [lab-16-spring-data-mongo](lab-16-spring-data-mongo) | 停用 | MongoDB | | [lab-17](lab-17) | 停用 | 多数据源与读写分离 | | [lab-18](lab-18) | 停用 | 分库分表 ShardingSphere | | [lab-19](lab-19) | 停用 | 数据库连接池 | | [lab-20](lab-20) | 停用 | 数据库版本管理(Flyway、Liquibase) | | [lab-21](lab-21) | 停用 | 缓存 Cache(Ehcache、Redis) | | [lab-66](lab-66) | 停用 | Spring Data Solr | | [lab-70-db-doc](lab-70-db-doc) | 停用 | 数据库表结构文档(Screw) | | [lab-72](lab-72) | 停用 | Curator 操作 ZooKeeper | | [lab-74](lab-74) | 停用 | Activiti 工作流 | | [lab-79](lab-79) | 停用 | MyBatis-Plus 整合 TDengine | | [lab-82](lab-82) | 停用 | Spring Batch 批处理 | **事务管理** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-52](lab-52) | 停用 | Seata 分布式事务(多数据源、HttpClient) | **消息队列** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-03-kafka](lab-03-kafka) | 停用 | Kafka | | [lab-04-rabbitmq](lab-04-rabbitmq) | 停用 | RabbitMQ | | [lab-31](lab-31) | 停用 | RocketMQ | | [lab-32](lab-32) | 停用 | ActiveMQ | | [lab-54](lab-54) | 停用 | Spring 事件机制 Event | **定时任务与异步任务** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-28](lab-28) | 停用 | 定时任务(Quartz、XXL-JOB) | | [lab-29](lab-29) | 停用 | 异步任务 | **配置中心** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-43](lab-43) | 停用 | 配置文件加载与优先级 | | [lab-44](lab-44) | 停用 | Nacos 配置中心与注册中心 | | [lab-45](lab-45) | 停用 | Apollo 配置中心 | **安全控制** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-01-spring-security](lab-01-spring-security) | 停用 | Spring Security 安全框架 | | [lab-33](lab-33) | 停用 | Shiro 安全框架(Jakarta 版) | | [oauth2](oauth2) | 停用 | OAuth 2.0(授权服务器、资源服务器、CAS、WebClient) | **服务容错** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-46](lab-46) | 停用 | Sentinel | | [lab-59](lab-59) | 停用 | Resilience4j | **RPC 开发** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-58](lab-58) | 停用 | Feign 声明式调用 | | [lab-62](lab-62) | 停用 | SOFARPC | | [lab-63](lab-63) | 停用 | Motan | | [lab-64](lab-64) | 停用 | gRPC | | [lab-65](lab-65) | 停用 | Spring Web Services(Spring-WS、Feign 调用) | | [lab-84](lab-84) | 停用 | SOFABolt 通信协议 | **监控与日志** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-34](lab-34) | 停用 | Actuator 监控端点 | | [lab-35](lab-35) | 停用 | Spring Boot Admin | | [lab-36](lab-36) | 停用 | Prometheus + Grafana | | [lab-37](lab-37) | 停用 | 日志 Logging | | [lab-38](lab-38) | 停用 | ELK + Filebeat | | [lab-39](lab-39) | 停用 | SkyWalking 链路追踪 | | [lab-51](lab-51) | 停用 | Sentry 异常管理平台 | | [lab-61](lab-61) | 停用 | CAT 监控平台 | | [lab-76](lab-76) | 停用 | 自定义 Actuator 端点与内存监控 | **持续交付** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-41](lab-41) | 停用 | Jenkins 持续交付 | | [lab-42](lab-42) | 停用 | 单元测试 | **其他实践** | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-47](lab-47) | 停用 | 自动配置原理与自定义 Starter | | [lab-50](lab-50) | 停用 | 邮件 Email | | [lab-56](lab-56) | 停用 | APISIX、Kong 网关 | | [lab-60](lab-60) | 停用 | Soul 网关 | | [lab-67](lab-67) | 停用 | Netty 网络编程(client/server) | | [lab-75](lab-75) | 停用 | MinIO 对象存储 | | [lab-77](lab-77) | 停用 | Spring 综合实践合集(状态机、SPEL、Javers 等) | | [lab-78](lab-78) | 停用 | 微信消息处理 | | [lab-80](lab-80) | 停用 | Spring AI | | [lab-81](lab-81) | 停用 | Flink 消费 Kafka | | [lab-83](lab-83) | 启用 | 请求报文证书加解密(国密) | ### Spring Cloud 示例 | 模块 | 状态 | 主题 | | --- | --- | --- | | [lab-07](lab-07) | 停用 | Spring Cloud Gateway 网关基准测试 | | [labx-01-spring-cloud-alibaba-nacos-discovery](labx-01-spring-cloud-alibaba-nacos-discovery) | 停用 | Nacos 注册中心 | | [labx-03-spring-cloud-feign](labx-03-spring-cloud-feign) | 停用 | OpenFeign 声明式调用 | | [labx-04-spring-cloud-alibaba-sentinel](labx-04-spring-cloud-alibaba-sentinel) | 停用 | Sentinel 服务容错 | | [labx-05-spring-cloud-alibaba-nacos-config](labx-05-spring-cloud-alibaba-nacos-config) | 停用 | Nacos 配置中心 | | [labx-06-spring-cloud-stream-rocketmq](labx-06-spring-cloud-stream-rocketmq) | 停用 | Spring Cloud Stream + RocketMQ | | [labx-07-spring-cloud-alibaba-dubbo](labx-07-spring-cloud-alibaba-dubbo) | 停用 | Dubbo 服务调用 | | [labx-08-spring-cloud-gateway](labx-08-spring-cloud-gateway) | 停用 | Spring Cloud Gateway | | [labx-09-spring-cloud-apollo](labx-09-spring-cloud-apollo) | 停用 | Apollo 配置中心 | | [labx-10-spring-cloud-stream-rabbitmq](labx-10-spring-cloud-stream-rabbitmq) | 停用 | Spring Cloud Stream + RabbitMQ | | [labx-11-spring-cloud-stream-kafka](labx-11-spring-cloud-stream-kafka) | 停用 | Spring Cloud Stream + Kafka | | [labx-12-spring-cloud-config](labx-12-spring-cloud-config) | 停用 | Spring Cloud Config | | [labx-14](labx-14) | 停用 | SkyWalking 链路追踪 | | [labx-15](labx-15) | 停用 | Spring Boot Admin | | [labx-16](labx-16) | 停用 | Jenkins 持续交付 | | [labx-17](labx-17) | 停用 | Seata 分布式事务(Feign) | | [labx-18](labx-18) | 停用 | Spring Cloud Bus + Kafka | | [labx-19](labx-19) | 停用 | Spring Cloud Bus + RabbitMQ | | [labx-20](labx-20) | 停用 | Spring Cloud Bus + RocketMQ | | [labx-24](labx-24) | 停用 | Resilience4j 服务容错 | | [labx-25](labx-25) | 停用 | ZooKeeper 注册中心 | | [labx-26](labx-26) | 停用 | ZooKeeper 配置中心 | | [labx-27](labx-27) | 停用 | Consul 注册中心 | | [labx-28](labx-28) | 停用 | Consul 配置中心 | | [labx-29-spring-cloud-consul-bus](labx-29-spring-cloud-consul-bus) | 停用 | Spring Cloud Bus + Consul | | [labx-30-spring-cloud-grpc](labx-30-spring-cloud-grpc) | 停用 | gRPC 服务调用 | ## 交流与致谢 - 原始示例与配套文章来自 [芋道源码(YunaiV)](https://github.com/YunaiV/SpringBoot-Labs),文章入口见 [www.iocoder.cn](http://www.iocoder.cn)。 - 本仓库的模块取舍、版本升级与文档维护以根目录 [`AGENTS.md`](AGENTS.md) 中的约定为准。 扫码二维码并回复「艿艿」,可加入原作者的交流群。 ![交流群二维码](http://www.iocoder.cn/images/common/erweima.jpg)