项目简介
这是一个基于 Spring Boot 的综合示例项目,集中演示了常见企业级开发中会用到的大量技术组件,
包括监控、日志、ORM、模板引擎、缓存、消息队列、定时任务、搜索引擎、分布式锁、限流、
多数据源、第三方登录等内容,适合作为 Spring Boot 综合学习与实战参考。
在这个项目中,已经集成了 actuator 监控、可视化监控管理、logback 日志、基于 AOP 的 Web 请求日志记录、
统一异常处理(支持返回 JSON 与错误页面)、多种模板引擎(Freemarker、Thymeleaf、Beetl、Enjoy)、
多种数据访问方式(JdbcTemplate、JPA、MyBatis、通用 Mapper、PageHelper、MyBatis-Plus、BeetlSQL)、
本地和云端文件上传、Redis 和 Ehcache 缓存、邮件发送、基础与动态定时任务(Spring Task、Quartz、XXL-Job)、
Swagger 接口文档与测试、基于 RBAC 的 Spring Security 权限体系、Spring Session 会话共享、
基于 Zookeeper 的分布式锁、RabbitMQ 与 Kafka 消息队列、WebSocket 与 Socket.io、UReport2 报表、
ElasticSearch 与异步任务、Dubbo RPC、MongoDB、Neo4j、Docker 容器化、多数据源支持、代码生成器、
GrayLog 日志收集、JustAuth 第三方登录、LDAP 操作、动态数据源切换、单机与分布式限流、
ElasticSearch 7.x 官方客户端接入、HTTPS、Flyway 数据库初始化等。
分支说明
master 分支
master 分支基于 Spring Boot 2.1.0.RELEASE。
各个模块的 parent 统一依赖根目录下的 pom.xml,用于集中管理依赖版本,结构更清晰,方便新手学习和维护。
v-1.5.x 分支
v-1.5.x 分支基于 Spring Boot 1.5.8.RELEASE,每个模块依赖单独的 spring-boot-demo-parent。
因为不少同学反馈这种依赖方式对入门不够友好,运行配置相对复杂,
所以该分支已经停止后续功能开发,后续内容会逐步迁移到 master 分支。
仍在使用该分支学习的同学可以继续参考,但更推荐后期切换到 master 分支,
毕竟官方 Spring Boot 也已经全面进入 2.x 版本。
开发环境依赖
- JDK 1.8(建议统一使用 1.8)
- Maven 3.5 及以上版本
- IntelliJ IDEA Ultimate 2018.2 及以上版本 (须使用 IDEA 开发,并确保安装启用 Lombok 插件)
- MySQL 5.7 及以上版本 (5.7 引入了一些新特性,并不完全向下兼容,示例中会尽量规避不兼容写法,但仍建议使用 5.7+)
运行方式概览
- 从代码托管平台克隆项目到本地(具体地址详见压缩包中的详情 HTML)。
- 使用 IntelliJ IDEA 打开克隆下来的项目根目录。
- 在 Maven 面板中导入根目录下的 pom.xml,等待依赖下载完成。
- 如果在 IDEA 中找不到 Maven Projects 面板,可以在顶部菜单勾选
View → Tool Buttons,右侧即可出现 Maven 面板。 - 在对应模块中找到各个 demo 的 Application 启动类,直接运行即可启动相应示例。
注意:每个 demo 模块都配有详细的 README 说明文档,建议在运行前先阅读;
部分示例还需要提前初始化数据库结构和数据,按说明脚本执行后再启动程序会更加顺利。
交流与拓展
如果你希望在该项目基础上看到更多集成示例,也可以在 issue 中提出需求,
作者会视情况将其加入 TODO 列表,逐步完善。通过阅读与运行这些模块,
可以系统地理解 Spring Boot 在真实项目中如何组合使用各种中间件和基础设施。
项目趋势
项目在开源平台上具有一定的 Star 与贡献记录,可以通过趋势图了解其活跃度和社区关注度,
对于判断项目是否持续维护和学习价值也有一定参考意义。
