把 Java 项目堆起来之后,我终于看懂了 Spring
起因
之前学 Java 的时候,我总有一种很奇怪的感觉:语法能看懂,视频也能跟着敲,但真要自己做一个东西,就不知道从哪开始。
所以后来我干脆把一堆练习和小项目放到一个仓库里,从 Java 基础、JDBC、Servlet/JSP,一直堆到 Spring、Spring MVC、Spring Boot。看起来有点乱,但它刚好记录了我从”会写代码”到”能把一个业务系统跑起来”的过程。
项目地址:yfgug/project
这个仓库里有什么
仓库主要分成四块:
| 目录 | 内容 | 技术栈 |
|---|---|---|
java-basics/ |
Java 基础和 JDBC 练习 | JDBC、PreparedStatement |
ecommerce-platform/ |
一个传统电商平台 demo | Servlet、JSP、DBUtils、连接池 |
spring-experiments/ |
Spring 生态实验合集 | Spring、Spring MVC、AOP、事务 |
dormitory-system/ |
校园宿舍管理系统 | Spring Boot、MyBatis、MySQL |
这不是那种一上来就微服务、网关、消息队列全家桶的项目。它更像一条学习路线:先把数据库连明白,再把 Web 请求跑通,然后理解分层,最后再用 Spring Boot 把这些东西整合起来。
为什么我觉得它有用
很多教程会把知识点拆得很碎:今天讲 JDBC,明天讲 Servlet,后天讲 Spring Bean。单个知识点都不难,但真正困难的是把它们串起来。
比如一个最普通的”查询学生列表”,背后其实有一整条链路:
- 页面发请求。
- Controller 接参数。
- Service 处理业务规则。
- Mapper/DAO 查数据库。
- 返回统一格式的数据。
- 前端再把结果渲染出来。
这条链路走通以后,再看 Spring 里那些注解就没那么玄学了。@Controller、@Service、@Mapper 不是为了显得高级,它们只是把不同职责放到不同位置。
CRUD 不丢人
以前我会觉得 CRUD 项目很普通,没什么好写的。
后来发现,CRUD 其实一点都不简单。增删改查只是表面,真正麻烦的是各种边界:
- 查询要不要支持多条件组合?
- 删除要不要支持批量?
- 文件上传要不要限制格式和大小?
- 登录失败太多次要不要锁一下?
- 返回给前端的数据格式要不要统一?
- 页面刷新之后 Session 里的购物车还在不在?
这些东西不会出现在”Hello World”里,但会出现在每个真实一点的项目里。
AI 在里面做了什么
这些项目里有不少代码是 AI 辅助生成的,尤其是模板感很强的部分:实体类、Controller、Service、Mapper、DAO、一些前端交互片段。
但我现在越来越觉得,AI 写代码不是”替你完成项目”,更像是”把你从重复劳动里拽出来”。
它可以帮我快速生成第一版,但最后还是得自己看:
- SQL 有没有查错表?
- 参数有没有校验?
- 文件上传有没有安全问题?
- 业务流程能不能真的走通?
- 代码只是能跑,还是以后也能改?
这一步不能省。不然项目看着很完整,里面可能全是坑。
最后
这个仓库不算高级,但对我很重要。
它让我确认了一件事:学后端不是背框架名,也不是堆技术栈,而是把数据、请求、业务和页面之间的关系一遍遍跑通。
从 Java SE 到 Spring Boot,中间真正的变化不是代码变短了,而是我开始知道一个项目应该怎么拆、怎么连、怎么交付。
这大概就是练项目的意义。
