Java(八)

38 阅读5分钟

本章不重复讲 Java 语法,每个知识点按四列说明:为什么要学 | 学到什么程度够用 | 建议学法 | 缺了会影响哪一章。


学习路径总览

flowchart TD
  J[000 Java 基础] --> M[Maven]
  J --> H[HTTP / REST]
  J --> S[SQL + MySQL]
  J --> G[Git]
  J --> I[IDEA]
  M --> L[分层 / MVC]
  H --> L
  S --> L
  L --> Y[YAML / 配置]
  Y --> D[Linux / Docker 可选]
  D --> OK[可以开始 01]
  G --> OK
  I --> OK

Maven(构建工具)

维度说明
为什么要学Spring Boot 项目默认用 Maven 管理依赖与打包;pom.xml 里每一行坐标都决定「项目能用什么库」。不懂 Maven,无法加 MyBatis、Redis 等依赖,也无法运行 mvn spring-boot:run。
学到什么程度够用① 读懂 pom.xml 中 <dependencies>、<parent>、<properties>;② 会执行 mvn clean package、mvn spring-boot:run;③ 知道「改依赖后要刷新/重新导入」;④ 能区分 compile / test / runtime scope 的大意。Gradle 了解「和 Maven 同类工具」即可。
建议学法官方 Maven in 5 Minutes + 跟做 01 时对照 pom.xml 逐段读。在 IDEA 右侧 Maven 窗口点刷新,观察依赖树变化。

Checkpoint:能说出 spring-boot-starter-web 是干什么的,并能在 pom.xml 里新增一个依赖坐标。


HTTP / REST

维度说明
为什么要学Controller 对外暴露的就是 HTTP 接口;你要能「用浏览器或 Postman 调通接口」,并读懂返回的 JSON 与状态码。
学到什么程度够用① 懂 GET / POST / PUT / DELETE 的典型用途;② 常见状态码 200、400、401、404、500 的含义;③ JSON 键值对与 Java 对象的对应直觉;④ 路径参数(/users/{id})与 查询参数(?page=1&size=10)的区别;⑤ REST 风格「资源 + 动词用 HTTP 方法表达」的入门理解。

Checkpoint:能解释 GET /api/users/1 与 GET /api/users?page=1 在语义上的区别。


SQL + MySQL

维度说明
为什么要学业务数据落在数据库里;MyBatis 写的是 SQL,表结构不对或 SQL 不会写,持久层无法工作。
学到什么程度够用① 单表 SELECT / INSERT / UPDATE / DELETE;② WHERE 条件、ORDER BY;③ 主键、自增、NOT NULL 的含义;④ JOIN 的直觉(两表通过外键关联,如 t_order.user_id → t_user.id);⑤ 索引「加速查询、不是魔法」的入门概念。存储过程、复杂优化可后学。
建议学法在 MySQL 客户端或 IDEA Database 工具里手写 SQL;跟做 下一篇 建 t_user / t_order;无本地 MySQL 时可用 H2 或 Docker(见下文 Linux/Docker)。
缺了会影响哪一章02(CRUD)、12(动态 SQL、事务、分页)。

Checkpoint:能为 t_user 写出「按 id 查一条」和「插入一条含 username、email」的 SQL。

示例表结构:

CREATE TABLE t_user (
  id         BIGINT PRIMARY KEY AUTO_INCREMENT,
  username   VARCHAR(64)  NOT NULL,
  email      VARCHAR(128),
  status     TINYINT      DEFAULT 1,
  created_at DATETIME     DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE t_order (
  id      BIGINT PRIMARY KEY AUTO_INCREMENT,
  user_id BIGINT NOT NULL,
  amount  DECIMAL(10, 2) NOT NULL,
  status  VARCHAR(32) DEFAULT 'CREATED'
);

Git(版本控制)

维度说明
为什么要学团队用 Git 协作;本地配置 application-local.yml 等敏感文件要靠 .gitignore 排除;改坏了要能回退。
学到什么程度够用① git clone / git pull / git push;② git add / git commit;③ 创建与切换分支 git checkout -b feature/xxx;④ 看懂 git status;⑤ 知道 不要 把密码、密钥 commit 进仓库。merge/rebase 深度可入职后再学。
建议学法Pro Git 中文版 前 3 章;在练手仓库里故意改错再 git restore 体验回退。
缺了会影响哪一章全流程协作;01 中 .gitignore 与本地配置分离;任意章节的代码提交习惯。

Checkpoint:能独立 clone 仓库、改文件、commit,并理解 .gitignore 里为什么要写 application-local.yml。


IDE(IntelliJ IDEA)

维度说明
为什么要学全书实操在 IDEA 中最顺畅:运行 Spring Boot、断点调试、Maven 依赖、Database 工具连 MySQL。
学到什么程度够用① 导入 Maven 项目(Open as Project);② 运行 DemoApplication 主类;③ 断点 Debug 一次请求链路;④ Maven 窗口 Reload;⑤ 可选:安装 Lombok 插件并开启 Annotation Processing(后续实体类可能用到)。
建议学法JetBrains IDEA 入门教程;跟做 01 时全程用 IDEA,不要只用命令行。
缺了会影响哪一章全书实操;调试异常栈、看 SQL 日志尤其依赖 IDE。

Checkpoint:能在 IDEA 里启动 Spring Boot 应用,并在 Controller 行上打断点,用浏览器触发后停住。


分层 / MVC(架构直觉)

维度说明
为什么要学国内 Java Web 项目普遍采用 Controller → Service → Mapper 分层;不懂分层会把 SQL 写在 Controller 里,或把 HTTP 细节塞进 Mapper,后期无法维护。
学到什么程度够用① 能画出「HTTP 请求进 Controller → Service 编排 → Mapper 访问 DB → 原路返回」;② 说出每层禁止做什么;③ MVC 中 M=模型/数据、V=视图(前后端分离时多为 JSON)、C=Controller 的入门对应。
sequenceDiagram
  participant C as Client
  participant Ctrl as Controller
  participant Svc as Service
  participant Map as Mapper
  participant DB as MySQL

  C->>Ctrl: HTTP JSON
  Ctrl->>Svc: 调用业务方法
  Svc->>Map: 数据访问
  Map->>DB: SQL
  DB-->>Map: 行数据
  Map-->>Svc: Entity
  Svc-->>Ctrl: DTO / Entity
  Ctrl-->>C: Result JSON

Checkpoint:能口头说明「为什么不在 Controller 里写 @Select SQL」。


YAML / 配置

维度说明
为什么要学Spring Boot 用 application.yml 集中管理端口、数据源、邮件、Redis 等;环境切换靠 spring.profiles.active。
学到什么程度够用① YAML 缩进表示层级(用空格,不用 Tab);② 会写 server.port、spring.datasource.url 等常见键;③ 理解 profile(dev / local / prod)切换;④ 知道敏感项用环境变量或 application-local.yml,且不提交 Git。

Checkpoint:能写出带 spring.application.name 和 server.port 的 application.yml,并说明 profile 如何激活。


Linux / Docker(可选)

维度说明
为什么要学MySQL、Redis、RabbitMQ 常在 Linux 或容器中运行;会 docker compose up 可快速起本地依赖,会看日志能排查「连不上库」类问题。
学到什么程度够用① 会看应用日志(tail -f 或 IDEA 控制台);② 用 Docker Desktop + Compose 起 MySQL/Redis;③ 知道端口占用、容器未启动时的典型报错。不必先学 K8s 或 Shell 脚本编程。
建议学法安装 Docker Desktop;复制 README 中 compose 示例,改 your-password 后启动;用 IDEA Database 连 localhost:3306。

Checkpoint:能在本机用 Docker 或本地安装方式让 MySQL 监听 3306,并用客户端连上。

自检清单

  • 我能读懂 pom.xml 里的 <dependency>,并会用 Maven 刷新依赖
  • 我知道 GET 与 POST 的区别,能读懂 JSON 响应
  • 我能手写单表 CRUD SQL,理解 t_user / t_order 表结构
  • 我会 git clone、commit,并知道 .gitignore 的作用
  • 我能在 IDEA 里运行 Java 主类并打断点调试
  • 我能说出 Controller / Service / Mapper 各负责什么
  • 我会写基本的 application.yml(端口、应用名),知道密码用占位符