Skip to content

Repository files navigation

后端学习记录

最后更新时间: 2026-04-25
技术栈: Spring Boot 3.3.0 + MyBatis Plus 3.5.5 + JWT + MySQL 8.x + Knife4j + JUnit5


📚 项目简介

这是一个个人学习后端的记录项目,用于记录学习过程中的时间节点、实现的功能模块以及技术积累。通过这个项目,可以清晰地追踪学习进度,并作为后续学习和回顾的参考。


📅 学习进度时间线

✅ 已实现功能(总)

模块 功能描述 状态
基础框架 Spring Boot 项目搭建 ✅ 完成
数据库整合 MyBatis Plus 配置与使用 ✅ 完成
用户认证 JWT 令牌生成与验证 ✅ 完成
密码加密 BCrypt 密码加密存储 ✅ 完成
登录功能 用户登录接口实现 ✅ 完成
注册功能 用户注册接口实现 ✅ 完成
用户管理 用户增删改查接口 + 分页 + 条件查询 ✅ 完成
学生管理 学生信息查询接口 ✅ 完成
统一响应 Result 统一返回结果封装 ✅ 完成
全局异常处理 GlobalExceptionHandler 异常捕获 ✅ 完成
拦截器 JwtInterceptor 请求拦截 ✅ 完成
跨域配置 WebConfig 跨域支持 ✅ 完成
接口文档 Knife4j API 文档自动生成 ✅ 完成
日志切面 AOP 操作日志记录 ✅ 完成
日志文件 Logback 日志文件输出 + 按日期分割 ✅ 完成
前端页面 登录注册 + 用户管理 CRUD 界面 ✅ 完成
单元测试 JUnit5 + Mockito 单元测试与集成测试 ✅ 完成

🆕 新增功能模块(按时间倒序)

2026-04-25 新增

模块 功能描述 状态
单元测试 JUnit5 + Mockito 单元测试与集成测试 ✅ 完成
📖 详细说明
  • JwtUtilTest: JWT 工具类测试(生成Token、解析Token、验证Token)
  • UserServiceTest: Service 层单元测试(Mock 数据库)
  • AuthControllerTest: Controller 集成测试(模拟 HTTP 请求)

2026-04-19 新增

模块 功能描述 状态
接口文档 Knife4j API 文档自动生成 ✅ 完成
日志切面 AOP 操作日志记录 ✅ 完成
日志文件 Logback 日志文件输出 + 按日期分割 ✅ 完成
前端页面 登录注册 + 用户管理 CRUD 界面 ✅ 完成
密码加密 BCrypt 密码加密存储 ✅ 完成
📖 详细说明
  • Knife4j: 访问 /doc.html 查看 API 文档,支持在线调试
  • AOP 日志: 自动记录操作日志(时间、操作人、IP、模块、操作、参数、耗时)
  • Logback: 日志保存到 logs/ 目录,按日期分割,单文件最大 10MB
  • 前端页面: 纯 HTML/CSS/JS 实现,无需前端框架

2026-04-18 新增(项目初始化)

模块 功能描述 状态
基础框架 Spring Boot 项目搭建 ✅ 完成
数据库整合 MyBatis Plus 配置与使用 ✅ 完成
用户认证 JWT 令牌生成与验证 ✅ 完成
登录功能 用户登录接口实现 ✅ 完成
用户管理 用户增删改查接口 ✅ 完成
学生管理 学生信息增删改查接口 ✅ 完成
统一响应 Result 统一返回结果封装 ✅ 完成
全局异常处理 GlobalExceptionHandler 异常捕获 ✅ 完成
拦截器 JwtInterceptor 请求拦截 ✅ 完成
跨域配置 WebConfig 跨域支持 ✅ 完成

📁 项目结构

src/
├── main/
│   ├── java/com/example/
│   │   ├── Application.java              # 启动类
│   │   ├── controller/                   # 控制器层
│   │   │   ├── AuthController.java       # 认证接口(登录/注册)
│   │   │   ├── UserController.java       # 用户管理接口
│   │   │   ├── StudentController.java    # 学生管理接口
│   │   │   └── HelloController.java      # 测试接口
│   │   ├── service/                      # 服务层
│   │   │   ├── UserService.java
│   │   │   └── StudentService.java
│   │   ├── mapper/                       # 数据访问层
│   │   │   ├── UserMapper.java
│   │   │   └── StudentMapper.java
│   │   ├── entity/                       # 实体类
│   │   │   ├── User.java
│   │   │   └── Student.java
│   │   ├── dto/                          # 数据传输对象
│   │   │   ├── LoginRequest.java
│   │   │   └── LoginResponse.java
│   │   ├── common/                       # 公共组件
│   │   │   └── Result.java               # 统一响应封装
│   │   ├── config/                       # 配置类
│   │   │   ├── MybatisPlusConfig.java    # MyBatis Plus 分页配置
│   │   │   ├── WebConfig.java            # Web 配置(拦截器)
│   │   │   ├── PasswordConfig.java       # BCrypt 密码加密配置
│   │   │   └── Knife4jConfig.java        # API 文档配置
│   │   ├── interceptor/                  # 拦截器
│   │   │   └── JwtInterceptor.java       # JWT 拦截器
│   │   ├── exception/                    # 异常处理
│   │   │   └── GlobalExceptionHandler.java
│   │   ├── annotation/                   # 自定义注解
│   │   │   └── Log.java                  # 操作日志注解
│   │   ├── aspect/                       # AOP 切面
│   │   │   └── LogAspect.java            # 日志切面
│   │   └── util/                         # 工具类
│   │       └── JwtUtil.java              # JWT 工具
│   └── resources/
│       ├── static/                       # 静态资源
│       │   ├── index.html                # 登录注册 + 管理页面
│       │   └── 3dgs.html                 # 测试页面
│       ├── application.properties        # 应用配置
│       └── logback-spring.xml            # 日志配置
└── test/                                 # 测试代码
    └── java/com/example/
        ├── util/
        │   └── JwtUtilTest.java          # JWT 工具类测试
        ├── service/
        │   └── UserServiceTest.java      # Service 层测试
        └── controller/
            └── AuthControllerTest.java   # Controller 集成测试

🔧 核心技术点

技术 说明
Spring Boot 3.3.0 快速构建 RESTful API
MyBatis-Plus 3.5.5 简化数据库操作,提供 CRUD 封装
JWT (jjwt 0.12.3) 无状态认证,实现用户登录验证
BCrypt 密码加密存储,安全性保障
Knife4j 4.4.0 API 文档自动生成,支持在线调试
AOP 操作日志切面,自动记录用户操作
Logback 日志文件输出,按日期自动分割
JUnit5 单元测试框架
Mockito Mock 框架,模拟依赖对象

🚀 快速开始

环境要求

  • JDK 21+
  • Maven 3.6+
  • MySQL 8.0+

配置数据库

  1. 创建数据库:
CREATE DATABASE school_db;
  1. 修改 application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/school_db?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=你的用户名
spring.datasource.password=你的密码

启动项目

mvn spring-boot:run

运行测试

# 运行所有测试
mvn test

# 运行指定测试类
mvn test -Dtest=JwtUtilTest

访问地址

地址 说明
http://localhost:8080/index.html 前端管理页面(登录/注册/CRUD)
http://localhost:8080/doc.html API 接口文档(Knife4j)

📖 API 接口文档

认证模块 /auth

方法 路径 说明 需要登录
POST /auth/register 用户注册 ❌
POST /auth/login 用户登录,返回 JWT Token ❌

用户模块 /user

方法 路径 说明 需要登录
GET /user 获取所有用户 ✅
GET /user/page 分页查询用户 ✅
GET /user/{id} 根据 ID 查询用户 ✅
GET /user/age/gt/{age} 查询年龄大于 N 的用户 ✅
GET /user/age/lt/{age} 查询年龄小于 N 的用户 ✅
GET /user/age/between 查询年龄区间内的用户 ✅
POST /user 新增用户 ✅
PUT /user 更新用户 ✅
DELETE /user/{id} 删除用户 ✅

学生模块 /students

方法 路径 说明 需要登录
GET /students 获取所有学生 ✅
GET /students/{id} 根据 ID 查询学生 ✅

🔐 认证说明

登录流程

  1. 调用 /auth/login 接口登录
  2. 返回 JWT Token
  3. 后续请求在 Header 中携带 Token:
Authorization: Bearer <token>

Token 有效期

  • 默认 24 小时
  • 可在 JwtUtil.java 中修改

📝 日志说明

日志位置

logs/
├── mavenLearn.log          # 全部日志
├── mavenLearn-error.log    # 仅错误日志
└── mavenLearn.日期.序号.log # 历史日志(按日期分割)

日志配置

  • 单文件最大 10MB
  • 保留 30 天
  • 自动按日期分割

🧪 测试说明

测试文件

文件 类型 说明
JwtUtilTest.java 单元测试 JWT 工具类测试
UserServiceTest.java 单元测试 Service 层测试(Mock)
AuthControllerTest.java 集成测试 Controller 层测试

测试覆盖

  • JWT Token 生成、解析、验证
  • 用户 CRUD 操作
  • 登录注册接口

🎯 后续学习计划

  • 完善学生模块 CRUD
  • 添加角色权限管理 (RBAC)
  • 集成 Redis 缓存
  • 实现文件上传功能
  • 邮件发送功能
  • 单元测试覆盖 ✅ 2026-04-25 完成
  • Docker 容器化部署

📚 学习笔记

详细的学习笔记请查看:SpringBoot 项目搭建笔记.md


📌 备注

本项目将持续更新,每次新增功能或学习新技术时,将在此 README 中记录时间节点和实现内容,便于追踪学习进度。

创建日期: 2026-04-18
作者: 个人学习记录

About

个人学习后端的记录项目

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages