Week 1-8: Spring Boot 学习计划完整项目
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
332
plan.md
Normal file
332
plan.md
Normal file
@@ -0,0 +1,332 @@
|
||||
# 三月学习计划:从 Spring 全家桶到 AI Agent 网站
|
||||
|
||||
> 目标:以 Spring 生态为基础,Web 能力为骨架,AI Agent 开发与算法能力为扩展,最终交付一个具备前端交互能力的 AI Agent 网站。
|
||||
|
||||
---
|
||||
|
||||
## 学习路线总览
|
||||
|
||||
```
|
||||
Month 1 Month 2 Month 3
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ Java + Spring │───▶│ Spring 进阶 │───▶│ AI Agent 开发 │
|
||||
│ ORM(JPA+MP) │ │ Vue 3 前端 │ │ 算法入门 │
|
||||
│ HTML/CSS/JS │ │ 工程化部署 │ │ 最终项目 │
|
||||
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 前置准备(开始前 1-2 天完成)
|
||||
|
||||
| 事项 | 说明 |
|
||||
|------|------|
|
||||
| 安装 JDK 17+ | 推荐 Eclipse Temurin / Amazon Corretto |
|
||||
| 安装 IDE | IntelliJ IDEA Community Edition |
|
||||
| 安装 Maven | Spring Boot 项目构建工具 |
|
||||
| 安装 Git | 版本管理 |
|
||||
| 安装 Postman | API 调试工具 |
|
||||
| 安装 VS Code | 前端开发用 |
|
||||
| 安装 Node.js 18+ | 前端环境 |
|
||||
|
||||
---
|
||||
|
||||
## 第一阶段:Java 基础 + Spring Boot 入门 + Web 基础(第 1-4 周)
|
||||
|
||||
### 第 1 周:Java 核心基础速通
|
||||
|
||||
**目标**:掌握 Java 基本语法,能写出简单程序。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | JDK 安装、环境变量、Hello World、IDE 使用 | 跑通第一个程序 |
|
||||
| 2 | 变量、数据类型、运算符、字符串 | 写一个计算器 |
|
||||
| 3 | if/else、switch、for/while 循环 | 打印乘法表、猜数字游戏 |
|
||||
| 4 | 数组、ArrayList、方法定义与调用 | 写一个学生成绩管理器 |
|
||||
| 5 | 类与对象、构造方法、封装 | 定义一个 Student 类并实例化 |
|
||||
| 6 | 继承、多态、接口、抽象类 | 设计简单的动物继承体系 |
|
||||
| 7 | 异常处理、集合框架(List/Map/Set) | 用 Map 实现一个简易通讯录 |
|
||||
|
||||
**本周产出**:一个命令行通讯录程序(增删改查)。
|
||||
|
||||
---
|
||||
|
||||
### 第 2 周:Spring Boot 入门
|
||||
|
||||
**目标**:理解 Spring Boot 是什么,创建第一个 Web 项目。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | Spring 框架是什么、IoC 和 DI 概念 | 手写一个简单的 IoC 容器理解原理 |
|
||||
| 2 | Spring Boot 项目结构、启动流程 | 用 Spring Initializr 创建项目 |
|
||||
| 3 | @RestController、@RequestMapping | 写第一个 "Hello World" API |
|
||||
| 4 | @GetMapping/@PostMapping、参数接收 | 实现 RESTful 风格的学生 CRUD |
|
||||
| 5 | @Service、@Repository 分层架构 | 重构代码为 Controller-Service-Repository |
|
||||
| 6 | application.yml 配置、多环境配置 | 配置开发/生产环境 |
|
||||
| 7 | 复习与总结 | 完成一个简单的 REST API 服务 |
|
||||
|
||||
**本周产出**:一个基于内存的 RESTful 学生管理 API。
|
||||
|
||||
---
|
||||
|
||||
### 第 3 周:ORM 双轨 —— JPA + MyBatis-Plus
|
||||
|
||||
**目标**:同时掌握两种主流 ORM 框架,理解各自适用场景。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | MySQL 安装、数据库/表的基本操作 | 创建 students 数据库和表 |
|
||||
| 2 | Spring Data JPA、Entity、Repository | 用 JPA 实现学生数据持久化 |
|
||||
| 3 | MyBatis-Plus 基础、Mapper、BaseMapper | 用 MyBatis-Plus 重写同一套 CRUD |
|
||||
| 4 | JPA vs MyBatis-Plus 对比总结 | 写一份对比笔记:API 风格、适用场景、性能差异 |
|
||||
| 5 | @Transactional、分页查询(两种框架写法) | 分别用 JPA 和 MP 实现分页和搜索 |
|
||||
| 6 | HTML 基础(标签、表单、布局) | 写一个静态学生列表页 |
|
||||
| 7 | CSS 基础(选择器、盒模型、Flexbox) | 美化学生列表页 |
|
||||
|
||||
**本周产出**:分别用 JPA 和 MyBatis-Plus 实现的学生数据访问层,附带对比笔记。
|
||||
|
||||
> **快速参考:JPA vs MyBatis-Plus 选型**
|
||||
>
|
||||
> | 维度 | Spring Data JPA | MyBatis-Plus |
|
||||
> |------|----------------|--------------|
|
||||
> | 风格 | 自动生成 SQL(约定大于配置) | 半自动,SQL 可控性高 |
|
||||
> | 简单 CRUD | `JpaRepository` 零代码 | 继承 `BaseMapper` 零代码 |
|
||||
> | 复杂查询 | JPQL / Specification / QueryDSL | LambdaQueryWrapper / 手写 SQL |
|
||||
> | 灵活度 | 低 — SQL 是框架生成的 | 高 — 可以精确控制 SQL |
|
||||
> | 学习曲线 | 较陡(JPA 规范本身很重) | 较平缓(对 SQL 友好) |
|
||||
> | 适用场景 | 表关系复杂、面向对象建模 | 复杂 SQL、报表、多表联查 |
|
||||
> | 国内流行度 | 外企/传统企业多 | 互联网/中小团队首选 |
|
||||
>
|
||||
> **新手建议**:两个都学。简单 CRUD 用 JPA 体验"无 SQL"的快感;复杂查询用 MyBatis-Plus 体会 SQL 的掌控力。实际工作中两把刀都磨利,视场景出鞘。
|
||||
|
||||
---
|
||||
|
||||
### 第 4 周:前端基础 + 项目整合
|
||||
|
||||
**目标**:补齐前端基础,理解 Spring MVC 核心,交付第一个完整项目。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | JavaScript 基础(变量、函数、DOM 操作) | 用 JS 实现页面的增删按钮 |
|
||||
| 2 | fetch API 调用后端接口 | 前端页面调通后端 API |
|
||||
| 3 | Spring MVC 请求处理流程、拦截器 | 实现登录拦截器 |
|
||||
| 4 | 统一异常处理、参数校验(Bean Validation) | 添加全局异常处理和表单校验 |
|
||||
| 5 | RESTful API 设计规范、HTTP 状态码 | 规范化所有 API 接口 |
|
||||
| 6 | 跨域 CORS 配置、文件上传 | 实现头像上传功能 |
|
||||
| 7 | 阶段总结 & 第一个里程碑项目 | 前后端联调、代码整理、写 README |
|
||||
|
||||
**里程碑项目**:学生管理系统 v1 —— Spring Boot + JPA/MyBatis-Plus + MySQL + 原生 JS 全栈应用。设计上同一套业务逻辑提供两个数据访问实现(JPA 版 + MP 版),通过配置切换。
|
||||
|
||||
---
|
||||
|
||||
## 第二阶段:Spring 进阶 + 现代前端框架(第 5-8 周)
|
||||
|
||||
### 第 5 周:Spring 全家桶核心组件
|
||||
|
||||
**目标**:掌握 Spring Security 和常用中间件。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | Spring Security 架构、过滤器链 | 引入 Security 依赖,配置基础认证 |
|
||||
| 2 | JWT 认证、登录/注册接口 | 实现 JWT 登录注册流程 |
|
||||
| 3 | 权限控制(RBAC)、方法级安全 | 实现角色权限管理 |
|
||||
| 4 | Redis 基础、Spring Cache | 用 Redis 缓存热点数据 |
|
||||
| 5 | Spring Boot Actuator、健康检查 | 配置应用监控端点 |
|
||||
| 6 | 参数校验进阶、自定义注解 | 写一个自定义校验注解 |
|
||||
| 7 | MyBatis-Plus 进阶(LambdaQueryWrapper、条件构造器、逻辑删除) | 用 MP 实现复杂查询和软删除 |
|
||||
|
||||
**本周产出**:带安全认证和缓存的学生管理系统 v2。
|
||||
|
||||
---
|
||||
|
||||
### 第 6 周:前端框架入门(Vue.js)
|
||||
|
||||
**目标**:掌握 Vue 3 基础,能开发 SPA 应用。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | Vue 3 介绍、创建项目(Vite)、组件基础 | 搭建 Vue 项目 |
|
||||
| 2 | 响应式数据(ref/reactive)、计算属性 | 实现一个计数器和一个 Todo List |
|
||||
| 3 | 指令(v-if/v-for/v-model)、事件处理 | 写一个动态表单 |
|
||||
| 4 | 组件通信(props/emits)、插槽 | 拆分 Todo List 为多个组件 |
|
||||
| 5 | Vue Router 路由、导航守卫 | 实现多页面导航 |
|
||||
| 6 | Pinia 状态管理 | 全局状态管理用户信息和 Token |
|
||||
| 7 | Axios 封装、请求拦截 | 封装 HTTP 客户端统一处理 JWT |
|
||||
|
||||
**本周产出**:一个独立的前端 SPA 应用(Todo + 路由 + 状态管理)。
|
||||
|
||||
---
|
||||
|
||||
### 第 7 周:前后端分离实战
|
||||
|
||||
**目标**:将 Vue 前端与 Spring Boot 后端完整对接。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | 前后端分离架构设计 | 规划 API 接口文档 |
|
||||
| 2 | 登录注册页面 + JWT 对接 | 实现完整登录流程 |
|
||||
| 3 | CRUD 页面实现(列表、表单、删除) | 学生管理的完整前端 |
|
||||
| 4 | 分页组件、搜索、排序 | 列表页增加分页和搜索 |
|
||||
| 5 | 文件上传前端实现 | 头像上传和预览 |
|
||||
| 6 | 错误处理、Loading 状态、空状态 | 完善交互体验 |
|
||||
| 7 | Nginx 部署、前后端联调 | 本地部署完整应用 |
|
||||
|
||||
**本周产出**:前后端分离的学生管理系统 v3(Vue 3 + Spring Boot)。
|
||||
|
||||
---
|
||||
|
||||
### 第 8 周:工程化能力
|
||||
|
||||
**目标**:掌握测试和 API 文档等工程化技能。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | 单元测试(JUnit 5 + Mockito) | 为 Service 层写单元测试 |
|
||||
| 2 | 集成测试(@SpringBootTest + H2) | 用 H2 内存数据库测试 |
|
||||
| 3 | Swagger/Knife4j API 文档 | 为所有接口生成文档 |
|
||||
| 4 | 阶段总结 & 第二个里程碑项目 | 代码审查、性能优化 |
|
||||
|
||||
**里程碑项目**:学生管理系统 v4 —— 有测试、有文档的完整前后端分离项目,DAO 层同时提供 JPA 和 MyBatis-Plus 两套实现,可配置切换。
|
||||
|
||||
---
|
||||
|
||||
## 第三阶段:AI Agent 开发 + 算法基础(第 9-12 周)
|
||||
|
||||
### 第 9 周:AI & LLM 基础
|
||||
|
||||
**目标**:理解大语言模型的基本概念和使用方式。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | AI/ML 基本概念、LLM 是什么 | 了解 GPT/Claude/文心一言等模型 |
|
||||
| 2 | Prompt Engineering 基础 | 动手写各种 Prompt,体验不同效果 |
|
||||
| 3 | OpenAI API / 国内大模型 API 调用方式 | 用 Postman 调通一个大模型 API |
|
||||
| 4 | Spring AI 框架入门 | 集成 Spring AI 到 Spring Boot 项目 |
|
||||
| 5 | 对话接口实现(Chat Completion) | 实现一个简单的聊天 API |
|
||||
| 6 | Streaming 流式响应(SSE) | 实现打字机效果的流式对话 |
|
||||
| 7 | 上下文管理、多轮对话 | 实现带记忆的多轮对话 |
|
||||
|
||||
**本周产出**:一个可以多轮对话的聊天机器人 API。
|
||||
|
||||
---
|
||||
|
||||
### 第 10 周:AI Agent 核心概念
|
||||
|
||||
**目标**:理解 Agent 架构,实现带工具调用的 Agent。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | Agent 是什么(感知-思考-行动) | 了解 ReAct / Plan-and-Execute 模式 |
|
||||
| 2 | Function Calling / Tool Use 原理 | 手动解析一次 Function Call 流程 |
|
||||
| 3 | Spring AI Function Calling 实现 | 定义并注册一个 Function 给模型调用 |
|
||||
| 4 | 多工具协作(天气、搜索、计算器) | 注册多个 Tool,让模型自动选择调用 |
|
||||
| 5 | Agent 记忆系统(短期 + 长期记忆) | 用 Redis 实现对话历史持久化 |
|
||||
| 6 | RAG(检索增强生成)基础 | 用 Spring AI + 向量数据库做知识库问答 |
|
||||
| 7 | Prompt 模板管理与优化 | 设计并管理多个 Prompt 模板 |
|
||||
|
||||
**本周产出**:一个支持 Function Calling 和多轮对话的 Agent 后端。
|
||||
|
||||
---
|
||||
|
||||
### 第 11 周:算法入门 + Agent 前端
|
||||
|
||||
**目标**:学习基础算法,构建 Agent 前端交互界面。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | 时间复杂度、空间复杂度、大 O 表示法 | 分析常见代码的时间复杂度 |
|
||||
| 2 | 排序算法(冒泡/快排/归并) | 手写三种排序并比较性能 |
|
||||
| 3 | 搜索算法(二分、BFS、DFS) | 用 BFS 解决迷宫问题 |
|
||||
| 4 | 哈希表、常用技巧(双指针、滑动窗口) | LeetCode 简单题 3-5 道 |
|
||||
| 5 | AI Agent 前端页面设计 | 用 Vue 3 设计聊天界面 |
|
||||
| 6 | 流式对话前端实现(SSE 对接) | 前端实现打字机效果 |
|
||||
| 7 | 对话历史管理、Markdown 渲染 | 对话列表、消息气泡、代码高亮 |
|
||||
|
||||
**本周产出**:Agent 聊天前端页面,支持流式输出和历史记录。
|
||||
|
||||
---
|
||||
|
||||
### 第 12 周:最终项目 —— AI Agent 网站
|
||||
|
||||
**目标**:整合所有技能,交付完整 AI Agent 网站。
|
||||
|
||||
| 天 | 学习内容 | 实践 |
|
||||
|----|---------|------|
|
||||
| 1 | 项目架构设计 | 设计 Agent 网站的完整架构图 |
|
||||
| 2 | Agent 后端开发(工具集成) | 集成搜索、计算、天气等工具 |
|
||||
| 3 | Agent 后端开发(记忆 + RAG) | 完善记忆系统和知识库 |
|
||||
| 4 | 前端页面完善(聊天 + 设置 + 工具面板) | 完成所有前端页面 |
|
||||
| 5 | 前后端联调、错误处理 | 全流程测试和 bug 修复 |
|
||||
| 6 | 部署上线(Docker + Nginx) | 打包部署到服务器 |
|
||||
| 7 | 项目总结与复盘 | 写项目 README、整理技术文档 |
|
||||
|
||||
**最终项目**:AI Agent 网站 ——
|
||||
|
||||
```
|
||||
功能清单:
|
||||
├── 🤖 智能对话 —— 多轮对话,流式输出
|
||||
├── 🔧 工具调用 —— 联网搜索、计算器、天气查询
|
||||
├── 📚 知识库 —— RAG 文档问答
|
||||
├── 🧠 记忆系统 —— 跨会话记忆
|
||||
├── 👤 用户系统 —— 注册登录、JWT 认证
|
||||
├── 💬 聊天界面 —— Markdown 渲染、代码高亮
|
||||
└── ⚙️ 系统设置 —— 模型选择、参数配置
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 学习节奏建议
|
||||
|
||||
| 事项 | 建议 |
|
||||
|------|------|
|
||||
| 每天学习时间 | 2-3 小时(周末可加量到 4-6 小时) |
|
||||
| 代码量 | 每天至少手写 50-100 行代码 |
|
||||
| 复习频率 | 每周日复习本周内容,每月底做一次大复习 |
|
||||
| 遇到问题 | 先自己 Debug 15 分钟 → Google/StackOverflow → 问 AI |
|
||||
| 笔记 | 用 Markdown 记录核心概念和自己的理解 |
|
||||
|
||||
---
|
||||
|
||||
## 推荐学习资源
|
||||
|
||||
### 书籍
|
||||
- 《Head First Java》—— Java 入门首选
|
||||
- 《Spring Boot 实战派》—— Spring Boot 快速上手
|
||||
- 《Vue.js 快速上手》—— 前端框架入门
|
||||
|
||||
### 视频
|
||||
- B 站尚硅谷/黑马程序员 Spring Boot 教程
|
||||
- B 站 Vue 3 入门教程
|
||||
|
||||
### 文档
|
||||
- [Spring Boot 官方文档](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/)
|
||||
- [Spring Data JPA 官方文档](https://docs.spring.io/spring-data/jpa/reference/)
|
||||
- [MyBatis-Plus 官方文档](https://baomidou.com/)
|
||||
- [Spring AI 官方文档](https://docs.spring.io/spring-ai/reference/)
|
||||
- [Vue 3 官方文档](https://cn.vuejs.org/)
|
||||
|
||||
### 刷题
|
||||
- LeetCode 简单难度(从第 2 个月开始每天 1 题)
|
||||
|
||||
---
|
||||
|
||||
## 每周检查点
|
||||
|
||||
| 周次 | 核心检查项 |
|
||||
|------|-----------|
|
||||
| 第 1 周 | 能用 Java 写出面向对象的命令行程序 |
|
||||
| 第 2 周 | 能用 Spring Boot 写 RESTful API |
|
||||
| 第 3 周 | 能用 JPA 和 MyBatis-Plus 分别操作数据库 |
|
||||
| 第 4 周 | 第一个全栈 CRUD 应用(双 ORM 实现可切换) |
|
||||
| 第 5 周 | 理解并实现 JWT 认证 |
|
||||
| 第 6 周 | 能用 Vue 3 写 SPA 应用 |
|
||||
| 第 7 周 | 前后端分离完整对接 |
|
||||
| 第 8 周 | 有测试、有文档 |
|
||||
| 第 9 周 | 能调用大模型 API 实现对话 |
|
||||
| 第 10 周 | 理解 Agent 架构 + Function Calling |
|
||||
| 第 11 周 | 算法入门 + Agent 聊天前端 |
|
||||
| 第 12 周 | AI Agent 网站上线 |
|
||||
|
||||
---
|
||||
|
||||
> **最重要的原则**:多写代码,少看视频。看完概念立刻动手,遇到 bug 是学习的最好机会。
|
||||
Reference in New Issue
Block a user