xkcoding / spring-boot-demo

xkcoding/spring-boot-demo

open_in_new前往仓库

🚀一个用来深入学习并实战 Spring Boot 的项目。

项目概览

项目概述

spring-boot-demo 是一个用于深入学习和实战 Spring Boot 的开源项目,由 xkcoding 创建。项目包含 66 个集成 demo,已完成 55 个,覆盖了 Spring Boot 生态中的众多常用组件和中间件,如监控、日志、ORM、缓存、消息队列、搜索引擎、安全认证等。每个 demo 都有独立的 README 说明,方便开发者按需学习和实践。

核心功能

  • 监控与可视化:集成 Actuator 和 Spring Boot Admin,提供应用运行状态监控。
  • 日志管理:集成 Logback、AOP 日志记录、GrayLog 日志收集。
  • 模板引擎:支持 Freemarker、Thymeleaf、Beetl、Enjoy 等多种模板引擎。
  • ORM 与数据库:集成 JdbcTemplate、JPA、MyBatis、MyBatis-Plus、BeetlSQL,并支持多数据源、分库分表(Sharding-JDBC)。
  • 缓存:集成 Redis 和 Ehcache。
  • 消息队列:集成 RabbitMQ、Kafka,RocketMQ 待完成。
  • 任务调度:支持 Spring Task、Quartz、XXL-Job。
  • 安全认证:集成 Spring Security(RBAC)、Shiro(待完成)、OAuth(待完成)、JustAuth 第三方登录。
  • 搜索引擎:集成 ElasticSearch(含 7.x Rest High Level Client)。
  • 其他:文件上传、邮件发送、WebSocket、分布式锁(Zookeeper)、限流(Guava/Redis+Lua)、代码生成器、Flyway 数据库迁移等。

适用与不适用场景

适用场景:

  • 学习 Spring Boot 集成各种主流组件的开发者。
  • 需要快速搭建 Spring Boot 项目原型或参考实现的团队。
  • 教学培训中作为 Spring Boot 实战案例。

不适用场景:

  • 生产环境直接使用:项目为 demo 性质,未经过生产级优化和测试。
  • 需要最新 Spring Boot 版本:项目基于 Spring Boot 2.1.0.RELEASE,版本较旧。
  • 需要完整业务逻辑:demo 仅展示集成方式,不包含完整业务功能。

技术架构与依赖

  • 语言:Java
  • 框架:Spring Boot 2.1.0.RELEASE
  • 构建工具:Maven 3.5+
  • JDK 版本:1.8+
  • 数据库:MySQL 5.7+(部分模块需要)
  • 主要依赖:Spring Boot Starters(web、data-jpa、data-redis、data-elasticsearch、security、amqp、kafka 等),以及 MyBatis、MyBatis-Plus、Quartz、XXL-Job、Swagger、JustAuth、Zookeeper、Dubbo、MongoDB、Neo4j、Flyway 等第三方库。

安装与快速开始

  1. 克隆仓库:git clone https://github.com/xkcoding/spring-boot-demo.git
  2. 使用 IntelliJ IDEA 打开项目,并确保安装 Lombok 插件。
  3. 在 IDEA 的 Maven Projects 面板中导入根目录下的 pom.xml。
  4. 根据需要运行各个 Module 的 Application 类。
  5. 注意:每个 demo 都有详细的 README,运行前请阅读;部分 demo 需要预先初始化数据库。

典型使用方法

  • 运行单个 demo:在 IDEA 中打开对应模块,运行其 Application 类。
  • 学习集成方式:参考各模块的 README 和代码,了解如何集成特定组件。
  • 自定义扩展:基于 demo 代码修改,快速搭建自己的项目骨架。

配置与部署要点

  • 配置文件:每个模块的 application.yml 或 application.properties 中配置相关参数,如数据库连接、Redis 地址等。
  • 数据库初始化:部分模块需要先执行 SQL 脚本初始化数据,脚本通常位于模块的 resources 目录。
  • 部署:项目可打包为可执行 JAR 或 WAR(参考 demo-war 模块),部署到服务器。
  • 注意:不同模块可能需要不同的外部服务(如 MySQL、Redis、RabbitMQ 等),请确保这些服务可用。

限制、风险与许可证

  • 限制:项目基于 Spring Boot 2.1.0,部分组件版本较旧,可能不兼容最新版本;部分 demo 标注为“待完成”,功能不完整。
  • 风险:作为学习项目,代码可能未考虑生产环境的安全性和性能,直接用于生产存在风险。
  • 许可证:MIT License,允许自由使用、修改和分发。

官方链接

信息来源和分析时间