spring-boot-demo:SpringBoot 学习路上的全家桶式练习场

这个仓库在 GitHub 上拿到了 689 个 Star。

作者 liuyueyi 把 SpringBoot、SpringCloud、SpringSecurity 学习过程中的源码全部沉淀到一个仓库里,做成了一个分级清晰的练习集。Spring 全家桶的学习材料本来散落在博客、文档、视频里,跟随某个知识点找一段配套代码常常要翻半天,这个项目把知识点和工程实例一一对应起来,对照起来方便。

正文顶部截图

1、这个仓库在干什么

定位是学习用的 demo 汇总,不是某个独立项目,也不是脚手架。仓库按基础篇、高级篇、MVC 篇、SpringCloud 篇、源码篇、实战篇划分目录,每个目录里再按知识点开小的子工程,每个子工程就是一个可以单独跑起来的 SpringBoot 项目。

环境要求写得清楚:JDK 1.8、Maven 3.2+、Spring Boot 2.2.1.RELEASE,IDEA 装上 Lombok 就能跑。数据库和中间件涉及 MongoDB、MySQL、Redis、Solr、ElasticSearch、RabbitMQ、Prometheus、Grafana、Kibana。要跑哪个子工程就准备哪个依赖,不强求全部装齐。

仓库的 README 里挂着一张很长的项目对照表,哪个子工程对应哪个知识点,一目了然。子工程命名按编号排列,从 000-properties 一直到 600-snowflake-id,区间分布大致反映知识图谱的层级关系。

2、内容覆盖到什么程度

README区域截图

基础篇覆盖配置、Bean、日志、AOP、SpEL、事件机制这些底层知识点,配置相关子工程从 000 一直到 002,分别演示 @PropertySource、@ConfigurationProperties、@Value、环境切换、自定义配置源、配置刷新绑定。Bean 章节从 004-008 串起来条件注入、动态注册、加载顺序、自动配置。

高级篇里 DB 部分最重,h2database、mysql、jdbcTemplate、JPA、mybatis、mybatis-plus、jooq、多数据源、mongodb、redis、influxdb 全部都有对应工程。Redis 部分细分为基础配置、jedis、lettuce、RedisTemplate、集群、排行榜应用、站点统计应用。多数据源单独列出 jdbcTemplate、mybatis、mybatis-plus 三种实现方式做对比。

MVC 篇覆盖过滤器、拦截器、参数解析、返回数据、异常处理、跨域、WebSocket、WebFlux,204 到 207 这几个工程把 freemaker、thymeleaf、beetl 三种模板引擎并列放出来,方便对比。

SpringCloud 篇列出了 eurka 注册中心、config 配置中心、gateway 网关、ribbon feign 调用,构成一套最小可用的微服务骨架。SpringSecurity 篇从内存认证到 db 认证,再到 RBAC、ACL 权限,安全这块也成体系。

3、实战和源码部分

实战篇章叫 spring-case,是基础之上向上走一层的应用型 demo。

举几个例子:用 FactoryBean 实现 SPI 效果、用 InstantiationAwareBeanPostProcessorAdapter 配合 Spring 事件机制做 @Value 配置自动刷新、自定义 BeanPostProcessor 实现代理类的注入、用 AOP 实现 Prometheus 自定义埋点上报、用 SseEmitter 实现扫码登录、Redis 实现排行榜和延时队列、AOP 重写 ScheduledAnnotationBeanPostProcessor 实现分布式定时任务mock。

源码篇对应 spring-extention 工程,把 Spring 的扩展点拉出来单独说:ApplicationContextInitializer、BeanDefinitionRegistryPostProcessor、InstantiationAwareBeanPostProcessor、SmartInstantiationAwareBeanPostProcessor、BeanFactoryAware 这一串扩展点都有独立工程演示。

4、配套的博文

仓库 README 里把每一个子工程对应的知识点都贴了博客链接,文章在 spring.hhui.top 这个站上。博文按系列组织,基础系列、DB 系列、MVC 系列、SpringCloud 系列、应用篇、源码篇,每个系列下面再分知识点小类。

对照方式是先看博文了解概念,再切到对应子工程看代码实现,工程都能跑起来,可以打断点跟一遍流程。比起单纯读源码或者硬啃官方文档,这种方式更适合在做项目的过程中快速对齐某个具体用法。

5、适合谁

一个练手 SpringBoot 全家桶的人,想系统过一遍主要知识点,又不满足于只看官方文档的 hello world。仓库里的子工程颗粒度小,每个工程聚焦一到两个知识点,复用价值高,遇到问题可以直接对照写法定位自己项目里的坑。

学到了某个深入点的章节,比如 Spring 扩展点、分布式锁、Redis 应用场景这种内容,仓库里的 spring-case 和 spring-extention 两块从应用和源码两条线分别切入,对照阅读能补上不少细节。

689 Star 对一个个人学习沉淀型仓库来说不算少,能持续积累到这种颗粒度,本身就是一种工程习惯的展示。

Star 对一个个人学习沉淀型仓库来说不算少,能持续积累到这种颗粒度,本身就是一种工程习惯的展示。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐