> **本文适合谁**:本科应届毕业生,选择 Java + Spring Boot 做后端毕设,需要从环境搭建开始完整跑通项目的同学。如果你已经会用 Spring Boot 写接口,可以直接跳到「模块拆分」和「接口联调」两节。
# 毕业设计Spring Boot项目从零搭建:环境配置、模块拆分到接口联调的完整流程(2026版)
每年 3-5 月是毕业设计开题与编码的高峰期,**Spring Boot** 仍然是本科毕设后端最主流的选择——它能让你用 1-2 周时间搭出一个能跑通业务的后台,配合 Vue/React 前端完成答辩演示。但很多同学第一次接触 Spring Boot 时,会卡在「环境装不上」「模块不知道怎么分」「接口调不通」这三件事上。
本文按毕设的真实执行顺序,拆解 **6 个阶段**:
- **环境配置**:JDK、Maven、IDE、数据库、接口测试工具
- **项目初始化**:Spring Initializr 与目录结构
- **模块拆分**:Controller / Service / Mapper 三层架构
- **数据持久化**:MyBatis-Plus 集成与代码生成
- **接口联调**:Swagger 文档 + Postman / Apifox 测试
- **常见踩坑**:FAQ 汇总
跟着做下来,你能在 1-2 天内拿到一个可演示的 Spring Boot 后台。
## 一、环境配置:先把这些装齐再写代码
很多同学一上来就 `new project`,结果半小时后才发现 JDK 版本不对、Maven 镜像没配、MySQL 密码忘了。**毕设第一步永远是环境**。
### 1.1 必备软件清单
| 工具 | 推荐版本 | 用途 |
|------|----------|------|
| JDK | 17 LTS | Spring Boot 3.x 要求 JDK 17+ |
| Maven | 3.8+ | 依赖管理 |
| IntelliJ IDEA | 2023 社区版 | 主力 IDE(社区版免费) |
| MySQL | 8.0 | 主流毕设数据库 |
| Navicat / DBeaver | 任意 | 数据库可视化 |
| Postman / Apifox | 任意 | 接口测试 |
### 1.2 JDK 与 Maven 配置
安装完 JDK 后,必须配置 `JAVA_HOME` 环境变量。在终端验证:
```bash
java -version # 应显示 17.x
mvn -v # 应显示 Maven 3.8+,并指向 JAVA_HOME
```
**Maven 镜像必配**:默认仓库在国外,下载依赖会非常慢。在 `~/.m2/settings.xml` 里把镜像改成阿里云:
```xml
aliyun
central
Aliyun Maven
https://maven.aliyun.com/repository/public
```
> **Pro Tip**:配好镜像后再 `mvn clean install` 一次,让常用依赖提前下载到本地仓库,后续创建项目会非常快。
### 1.3 数据库准备
创建一个名为 `graduation_<你的题目>` 的数据库,字符集选 `utf8mb4`(避免 emoji 与生僻字乱码)。毕设常用 MySQL 8.0 默认就是 utf8mb4,但如果用 5.7 一定要在建库时显式指定。
## 二、项目初始化:Spring Initializr 一键生成
打开 [https://start.spring.io](https://start.spring.io),按以下选项生成:
- **Project**:Maven
- **Language**:Java
- **Spring Boot**:3.2.x(稳定版)
- **Group**:`com.<你的姓名拼音>`
- **Artifact**:`graduation-design`
- **Dependencies 必选**:Spring Web、Spring Data JPA 或 MyBatis-Plus、MySQL Driver、Lombok
下载 zip 后用 IDEA 打开,等 Maven 同步完成(右下角进度条走完)。
### 2.1 推荐的目录结构
```
com.example.graduation
├── controller/ # 接收 HTTP 请求
├── service/ # 业务逻辑(接口 + 实现)
│ └── impl/
├── mapper/ # 数据库访问
├── entity/ # 实体类,对应数据库表
├── dto/ # 前端传入的请求对象
├── vo/ # 返回给前端的视图对象
├── common/ # 公共类(Result、PageResult)
├── config/ # 配置类(CORS、Swagger、拦截器)
└── exception/ # 自定义异常与全局处理
```
**为什么这样分?** 这是阿里 / 字节内部最主流的「三层架构 + DTO/VO 分离」模式,答辩时评委一眼就能看懂你的工程化水平。
## 三、模块拆分:Controller / Service / Mapper 三层职责
很多毕设代码把所有逻辑写在 Controller 里,几百行下来既难维护又难答辩提问。**严格的三层拆分**是工程化能力的体现。
### 3.1 各层职责
- **Controller**:只做参数接收、调用 Service、返回结果,**不允许写业务逻辑**和**直接操作数据库**
- **Service**:核心业务逻辑,一个 Service 方法对应一个用例(例如 `login`、`createOrder`)
- **Mapper**:纯数据库访问,只做 CRUD,不写业务判断
### 3.2 一个完整的示例:用户登录
**Controller**(`UserController.java`):
```java
@RestController
@RequestMapping("/api/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/login")
public Result login(@RequestBody LoginDTO dto) {
String token = userService.login(dto.getUsername(), dto.getPassword());
return Result.success(token);
}
}
```
**Service**(`UserServiceImpl.java`):
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public String login(String username, String password) {
User user = userMapper.selectByUsername(username);
if (user == null) throw new BizException("用户不存在");
if (!PasswordUtil.matches(password, user.getPassword())) {
throw new BizException("密码错误");
}
return JwtUtil.sign(user.getId());
}
}
```
**Mapper**(`UserMapper.java`):
```java
@Mapper
public interface UserMapper {
User selectByUsername(@Param("username") String username);
}
```
对应的 `UserMapper.xml` 写 SQL:
```xml
```
> **Pro Tip**:用 MyBatis-Plus 可以省掉 80% 的单表 SQL——它内置 `selectById`、`insert`、`updateById` 等方法,只要继承 `BaseMapper` 就能直接用。
## 四、模块拆分进阶:业务模块化
当项目超过 5 个表,建议按 **业务模块** 再切包,而不是把所有 Controller 都堆在一起:
```
com.example.graduation
├── module/
│ ├── user/ # 用户模块:Controller/Service/Mapper/Entity 都在这
│ ├── order/
│ └── product/
├── common/ # 公共代码
└── GraduationApplication.java
```
这样答辩时评委问「你这个项目怎么组织的」,你能指着包结构讲清楚「按业务域拆分」——这是中高级工程师的工程化能力体现。
## 五、接口联调:Swagger 文档 + Apifox 测试
后端写完不能只靠前端同学手动试,必须有 **接口文档** 和 **测试工具**。
### 5.1 集成 Swagger / Knife4j
在 `pom.xml` 加依赖:
```xml
com.github.xiaoymin
knife4j-openapi3-jakarta-spring-boot-starter
4.4.0
```
启动后访问 `http://localhost:8080/doc.html`,就能看到自动生成的可视化接口文档,并且能直接在线测试每个接口。**这是毕设答辩演示的加分项**。
### 5.2 前后端联调注意事项
- **统一返回格式**:所有接口必须返回 `Result`,包含 `code / message / data`,前端不用判空
- **CORS 跨域**:用 `@CrossOrigin` 或全局 `CorsConfig`,否则前端调不通
- **统一异常处理**:写一个 `@RestControllerAdvice` 全局捕获异常,避免堆栈直接返回给前端
## 六、提交与演示前的 checklist
写完代码后,按这个清单逐项检查:
- [ ] 所有 Controller 方法都加 Swagger 注解
- [ ] 数据库脚本 (`schema.sql`) 随项目一起提交
- [ ] `application.yml` 用占位符,敏感信息不入库
- [ ] 提供 `README.md`,写明启动步骤
- [ ] 用 `mvn clean package` 跑通打包,再演示给导师看
## 常见 FAQ
### Q1:Spring Boot 2.x 和 3.x 毕设选哪个?
**建议选 3.2.x**。Spring Boot 3 是当前主流版本,JDK 17 是 LTS 长期支持版本,企业招聘普遍要求。但如果你导师的项目还在用 2.7,跟导师保持一致更省心。
### Q2:JPA、MyBatis、MyBatis-Plus 选哪个做毕设?
**推荐 MyBatis-Plus**。JPA 上手快但复杂查询不灵活;MyBatis 灵活但要写大量 XML;MyBatis-Plus 兼顾灵活性与开发效率,毕设 80% 的需求都是单表 CRUD,Plus 内置方法完全够用,复杂 SQL 再用 XML 写。
### Q3:毕设后端需要做权限控制吗?
**视题目而定**。如果题目是「基于 Spring Boot 的 XX 管理系统」,必须有登录 + 角色权限(管理员 / 普通用户);如果是「算法研究 / 数据分析」类题目,可以简化。推荐用 **Spring Security + JWT**,学习成本低、演示效果好。
### Q4:Spring Boot 项目怎么部署到服务器给导师演示?
两种主流方式:(1) **jar 包部署**:`mvn clean package` 生成 jar,上传服务器后 `java -jar` 启动;(2) **Docker 部署**:写一个 `Dockerfile`,用 `docker build` + `docker run` 一键启动,更显工程化。毕设演示推荐 jar 方式,简单可控。
### Q5:环境装不上 / 依赖下载失败怎么办?
90% 的问题来自网络——Maven 镜像没配、Gradle 被墙。先 `ping maven.aliyun.com` 看通不通;不通就换成阿里云的 HTTPS 镜像;JDK 装不上检查 `JAVA_HOME` 与 `PATH` 是否生效。**别在环境问题上耗超过 1 小时**,环境装不上时优先找同学远程协助。
## 结论
**毕业设计 Spring Boot 项目的搭建,本质是 3 件事**:环境要齐、模块要清、接口要稳。按本文的 6 个阶段执行,1-2 天内就能拿到一个可演示的后台。答辩时,清晰的工程化结构 + 完整的 Swagger 文档 + 稳定的接口联调,比「做了多少功能」更能体现你的技术能力。
下一步建议:先在 `start.spring.io` 生成项目,按本文目录结构搭出 `user` 模块并跑通登录接口——这是 0 到 1 的关键一步。后续我会继续写 MyBatis-Plus 高级查询、Spring Security 鉴权、Docker 部署等相关内容,记得收藏本站持续更新。
**相关文章**:
- [毕业设计前后端分离开发实战:Vue+Spring Boot项目从零搭建指南](https://schooltools.cn/article/bi-ye-she-ji-qian-hou-duan-fen-li-kai-fa-shi-zhan-Vue-Spring-Boot-xiang-mu-cong-ling-da-jian-zhi-nan)
- [毕业设计前后端分离项目接口规范:RESTful 设计与 Swagger 文档生成](https://schooltools.cn/article/zhou-mo-bu-chong-bi-ye-she-ji-qian-hou-duan-fen-li-xiang-mu-jie-kou-gui-fan-RESTful-she-ji-yu-Swagger-wen-dang-sheng-cheng)
- [毕业设计中的分页查询与搜索筛选功能实现:从MySQL分页到动态条件查询的完整方案](https://schooltools.cn/article/zhou-mo-bu-chong-bi-ye-she-ji-zhong-de-fen-ye-cha-xun-yu-sou-suo-shai-xuan-gong-neng-shi-xian-cong-MySQL-fen-ye-dao-dong-tai-tiao-jian-cha-xun-de-wan-zheng-fang-an)
- [毕业设计数据库设计实战:从ER图到建表SQL的完整方法](https://schooltools.cn/article/bi-ye-she-ji-shu-ju-ku-she-ji-shi-zhan-cong-ER-tu-dao-jian-biao-SQL-de-wan-zheng-fang-fa)
- [毕业设计程序设计完全指南:从选题到答辩的7个关键步骤](https://schooltools.cn/article/bi-ye-she-ji-cheng-xu-she-ji-wan-quan-zhi-nan-cong-xuan-ti-dao-da-bian-de-7-ge-guan-jian-bu-zhou)
相关文章
2025-06-12
5878
2025-06-18
2783
2025-06-24
2066
2025-07-01
1915
2025-05-18
1721
2025-06-25
1692