起因

之前学 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。单个知识点都不难,但真正困难的是把它们串起来。

比如一个最普通的”查询学生列表”,背后其实有一整条链路:

  1. 页面发请求。
  2. Controller 接参数。
  3. Service 处理业务规则。
  4. Mapper/DAO 查数据库。
  5. 返回统一格式的数据。
  6. 前端再把结果渲染出来。

这条链路走通以后,再看 Spring 里那些注解就没那么玄学了。@Controller@Service@Mapper 不是为了显得高级,它们只是把不同职责放到不同位置。

CRUD 不丢人

以前我会觉得 CRUD 项目很普通,没什么好写的。

后来发现,CRUD 其实一点都不简单。增删改查只是表面,真正麻烦的是各种边界:

  • 查询要不要支持多条件组合?
  • 删除要不要支持批量?
  • 文件上传要不要限制格式和大小?
  • 登录失败太多次要不要锁一下?
  • 返回给前端的数据格式要不要统一?
  • 页面刷新之后 Session 里的购物车还在不在?

这些东西不会出现在”Hello World”里,但会出现在每个真实一点的项目里。

AI 在里面做了什么

这些项目里有不少代码是 AI 辅助生成的,尤其是模板感很强的部分:实体类、Controller、Service、Mapper、DAO、一些前端交互片段。

但我现在越来越觉得,AI 写代码不是”替你完成项目”,更像是”把你从重复劳动里拽出来”。

它可以帮我快速生成第一版,但最后还是得自己看:

  • SQL 有没有查错表?
  • 参数有没有校验?
  • 文件上传有没有安全问题?
  • 业务流程能不能真的走通?
  • 代码只是能跑,还是以后也能改?

这一步不能省。不然项目看着很完整,里面可能全是坑。

最后

这个仓库不算高级,但对我很重要。

它让我确认了一件事:学后端不是背框架名,也不是堆技术栈,而是把数据、请求、业务和页面之间的关系一遍遍跑通。

从 Java SE 到 Spring Boot,中间真正的变化不是代码变短了,而是我开始知道一个项目应该怎么拆、怎么连、怎么交付。

这大概就是练项目的意义。