知识全景图/ 软件工程与系统/ Java 生态全景图/ Java 主线

Java 学习阶段二:把小程序升级成后端项目

沿用阶段一的记账本,从命令行程序升级到数据库、REST 接口和 Spring Boot 分层

定位: 这页不再按“集合、异常、IO、JDBC、Spring Boot”堆知识点,而是沿用阶段一的记账本项目,让每个 Java 主线能力都从升级需求里自然出现。

贯穿项目: Web 版记账系统。用户可以新增账目、查询账目、按分类统计、保存到数据库,并通过 REST 接口访问。
一、阶段二的核心问题:小程序为什么不够了
阶段一的小程序真实项目会遇到什么阶段二引入什么
数据只在内存里程序一关,账目全没了文件、数据库、JDBC、持久化
只能在命令行操作别人无法通过网页或接口使用HTTP、REST、Controller
代码只有几个方法功能多了以后,新增、查询、统计、校验混在一起Service、Repository、分层
输入靠人工小心用户会乱输、漏填、重复提交参数校验、异常处理、统一错误返回
只保存一类数据账目、分类、用户、统计规则开始有关联对象模型、DTO、数据库表设计
自己看运行结果项目要能被验证、回归和交付单元测试、接口测试、日志
二、六次升级:每次只解决一个真实痛点
整理对象 查询筛选 保存数据 开放接口 分层组织 测试交付
升级 1:把 Entry 设计清楚
一笔账至少有金额、类型、分类、备注、创建时间。先让对象模型稳定,后面数据库和接口才有落点。
升级 2:支持查询和筛选
按类型、分类、日期筛选账目。这里学习集合、排序、过滤,不是为了背 API,而是为了回答“用户怎么找数据”。
升级 3:把数据保存下来
先用文件保存,再迁移到 MySQL。你会自然理解 IO、异常、SQL、JDBC 和事务为什么重要。
升级 4:开放 REST 接口
把新增、查询、统计做成 HTTP 接口。Spring Boot 这时才出现,因为你已经有真实功能要对外暴露。
升级 5:拆成三层
Controller 处理请求,Service 处理业务,Repository 处理数据。分层不是规矩,是为了让变化不互相污染。
升级 6:让项目能被验证
补单元测试、接口测试、日志和错误返回。项目不是跑起来就结束,要能证明它在关键场景下可靠。
三、8 周路线:按项目升级排,而不是按术语排
时间项目目标自然学习到的 Java 主线交付物
第 1 周重构阶段一记账本类、对象、封装、方法职责清晰的 Entry、Category、Ledger 类
第 2 周支持列表、筛选、统计集合、泛型、遍历、排序、过滤可查询的命令行记账本
第 3 周保存到文件IO、异常、资源关闭、数据格式重启后数据仍然存在
第 4 周迁移到 MySQLSQL、JDBC、事务、表结构账目表、分类表、基础 DAO
第 5 周接入 Spring BootHTTP、REST、Controller、配置新增和查询账目的接口
第 6 周拆 Service / Repository分层、依赖方向、DTO、业务校验结构清楚的后端项目
第 7 周处理错误和边界异常、参数校验、统一返回、事务边界非法输入、重复提交、空结果都有处理
第 8 周补测试和复盘单元测试、接口测试、日志、项目表达项目说明、接口清单、测试用例
四、概念回收表:每个知识点都要回到项目
知识点在 Web 记账系统里怎么出现吸收标准
面向对象Entry、Category、Ledger、EntryService 各有明确职责能解释为什么这些字段和方法放在这里
集合与泛型查询结果、统计列表、分类集合能根据查询、排序、去重需求选择集合
异常处理金额非法、分类不存在、数据库失败、接口参数缺失能区分用户输入错误和系统内部错误
IO 与数据库从文件保存升级到 MySQL 持久化能说清数据为什么不该只存在内存里
Spring Boot把新增、查询、统计暴露为 REST 接口能讲清 Controller、Service、Repository 的分工
事务新增账目和更新统计口径要么一起成功,要么一起失败能指出事务边界在哪里
测试新增、查询、非法输入、统计结果都要能验证能用测试证明核心行为没有被改坏
五、阶段二最重要的三个分水岭
从“我会写代码”到“我会组织代码”
代码量上来后,最难的不是语法,而是职责边界。Controller 不该算余额,Repository 不该做业务判断。
从“数据能显示”到“数据能保存、能查、能恢复”
数据库不是另一个知识点,而是让程序进入真实世界的状态管理工具。
从“功能能跑”到“失败也有处理”
非法输入、重复请求、数据库失败、空结果、事务回滚,都是后端项目的核心经验。
六、阶段二验收:能不能讲清项目
验收问题合格回答应该包含
你的记账系统有哪些核心对象?Entry、Category、User 或 Ledger,以及它们的字段和关系
新增一笔账从请求到入库经过哪里?Controller、DTO、Service 校验、Repository、数据库、返回结果
金额为负数时怎么处理?参数校验、错误码、错误信息,不进入数据库写入
按分类统计余额怎么实现?查询条件、SQL 或集合统计、结果 DTO、接口返回
如果数据库写入失败怎么办?事务、异常、日志、错误返回,必要时保留排查信息
怎么证明你这个项目是可靠的?核心单元测试、接口测试、边界用例、项目说明
七、回到主线
上一页:用小程序学会编程基本结构
如果你还不能解释输入、变量、判断、循环、方法和对象,先回到 Java 学习阶段一
下一页:多语言对比辅助理解
当你已经能讲清一个 Spring Boot 小项目,再进入 Java 学习阶段三:多语言对比,比较的就不只是语法,而是类型、运行时、内存、并发和生态取舍。
上层页:Java 生态全景图
要看 JVM、Spring、数据库、中间件和后端生态的位置,回到 Java 生态全景图
总结: 阶段二的吸收顺序是:先把阶段一的小程序升级,遇到保存、查询、接口、分层和失败处理这些真实问题,再引入 Java 主线知识。这样 Spring Boot、数据库、异常、集合和测试都变成项目里的必要工具,而不是一串术语。