基于 Spring Boot 的在线考试系统实战:uexam 从部署到使用全指南(SpringBoot 实战项目)
文档教程后端【免费下载链接】springboot-guideSpringBoot2.0从入门到实战项目地址https://gitcode.com/gh_mirrors/sp/springboot-guide点击查看免费下载本文整理自 springboot-guide 仓库「实战项目」章节一个基于SpringBoot的在线考试系统完整讲解uexam这款前后端分离在线考试系统的技术架构、业务功能与本地部署步骤。导读uexam是一款基于 Spring Boot 2.0 的前后端分离在线考试系统同时支持 Web 端与微信小程序端界面美观、代码结构清晰、表设计规范非常适合作为学习 Spring Boot 实战、积累项目经验甚至接私活的参考项目。读完本文你将掌握用 Docker 一键搭建 PostgreSQL Redis 环境、初始化考试系统数据库、修改 Spring Boot 配置文件、启动后端并让前端Web 端/管理端顺利跑起来的完整流程以及从「建学科 → 出题目 → 组试卷 → 加学生 → 学生答题」的全链路业务操作。项目介绍uexam 是一个功能比较成熟、被重点推荐的开源在线考试系统推荐它的核心原因有三点功能成熟整体功能完整并非玩具级 demo应用场景广泛在校考试、企业内部测评、接私活交付均可复用体验好界面设计美观操作体验流畅前后端分离带来的交互质量明显更高代码与表结构规范代码整体结构清晰数据库表设计规范熟悉基本功能后很容易读懂源码。核心技术栈分层技术选型后端Spring Boot 2.0 MyBatis数据存储MySQL / PostgreSQL二选一 Redis前端Vue客户端形态Web 端 微信小程序端架构模式前后端分离双数据库版本uexam 同时提供了MySQL 和 PostgreSQL 两个数据库版本源码中分别维护对应的数据库脚本与配置。原文作者演示时采用的是PostgreSQL 版本并建议读者优先体验 PostgreSQL 版本——本文的部署演示同样以 PostgreSQL 版本为准。提示如果对 Spring Boot 整合 MyBatis 的两种主流方式全注解 / XML还不熟悉可以参考同仓库的 优雅整合 SpringBootMybatis 一文它能帮你更快理解 uexam 后端的 Dao/Service/Controller 分层。软件架构uexam 采用前后端分离的总体架构后端服务基于 Spring Boot 2.0负责业务逻辑、权限控制与数据读写支撑学生端、管理端、小程序端等所有前端调用前端应用基于 Vue 构建分为管理端xzs-admin与学生端xzs-student另有独立的微信小程序端基础设施PostgreSQL/MySQL 负责业务数据持久化Redis 承担缓存职责共同支撑后端高效运行。从部署形态看后端构建完成后会把前端静态资源内嵌到 Spring Boot 工程中一起启动默认情况下访问 8000 端口即可同时打开学生端与管理端如果希望彻底独立部署则需在前端目录中分别运行 Vue 工程对应 8001/8002 端口这就是「内嵌模式」与「前后端分离模式」两种运行方式详见下文启动章节。使用效果与核心业务流程原文强调「样式以及操作体验都是非常不错的」这是推荐该项目的很重要一个原因。整个系统的核心业务是围绕考试闭环设计的可以归纳为一条主线创建学科 → 添加题目 → 组卷添加试卷→ 添加学生 → 学生登录答题管理端操作管理端负责考试资源的维护操作顺序有严格的前置依赖需要按下面的顺序逐步进行。第一步添加学科在创建题目之前必须先创建学科。学科是题目归类的第一层维度例如演示中创建的学科是「编程」、年级为「三年级」。学科与年级的组合决定该学科下题目的归属也会影响学生账号与试卷的匹配关系。第二步添加题目进入题目管理后可以看到系统支持多种题型单选题多选题判断题填空题简答题以单选题为例添加题目时需要填写题干、选项、正确答案及所属学科等信息题目创建成功后题目列表会立即展示刚刚添加的题目方便核对。第三步添加试卷有了学科和题目之后才能添加试卷——试卷由题目组装而成因此必须先完成前两步。创建试卷时按需从题库中挑选题目、配置分值即可添加成功后试卷列表会出现新试卷。第四步添加学生管理端可以批量维护学生账号。注意学生账号要与前面创建的「学科所对应的年级」对应上即学生的年级属性必须与学科年级匹配否则学生端无法正确匹配到对应试卷。学生端体验使用管理端创建好的学生账号登录学生端主页会发现主页上多出了管理端刚刚创建的试卷点进去即可进入答题界面完成作答。这条「管理端出卷 → 学生端作答」的链路完整覆盖了一个在线考试系统的最小可用闭环也是该项目拿来即用的直接体现。后端部署PostgreSQL 版本原文以 PostgreSQL 数据库版本演示后端启动并明确表示照此步骤新手也能成功把项目跑起来。后端代码位于uexam/source/xzs下面分四步完成。第一步安装 PostgreSQL这里使用 Docker 拉取最新版 PostgreSQL 镜像前提本机已安装 Docker。1. 拉取镜像$ docker pull postgres2. 查看镜像$ docker images |grep postgres postgres latest 62473370e7ee 2 weeks ago 314MB3. 运行 PostgreSQL$ docker run -d -p 5432:5432 --name postgresql -e POSTGRES_PASSWORD123456 postgres参数说明-d后台运行容器-p 5432:5432将容器内 PostgreSQL 默认端口 5432 映射到宿主机 5432--name postgresql为容器命名便于后续管理-e POSTGRES_PASSWORD123456设置数据库超级用户postgres的密码为123456后续在application-dev.yml中要使用该密码连接数据库。第二步安装 Redis1. 拉取镜像$ docker pull redis2. 查看镜像$ docker images |grep redis3. 运行 Redis$ docker run -itd --name redis-test -p 6379:6379 redis参数说明-itd以交互式后台方式运行容器-p 6379:6379映射 Redis 默认端口 6379--name redis-test容器命名末尾redis为镜像名Redis 无密码时连接串默认即为127.0.0.1:6379。第三步创建数据库并执行数据库脚本在 PostgreSQL 中创建一个名为xzs的数据库数据库名固定为xzs执行对应的数据库脚本。脚本位于uexam/source/xzs/sql目录下按脚本文件顺序执行即可完成建表与初始化数据。第四步修改配置文件使用 IntelliJ IDEA 打开后台代码目录uexam/source/xzs修改application-dev.yml将postgresql或 mysql、redis 的服务地址改为自己本地的地址即本机 Docker 映射出的127.0.0.1:5432与127.0.0.1:6379账号密码与上一步启动容器时设置的保持一致。这里补充说明背后的 Spring Boot 机制application-dev.yml属于 Spring Boot 的多环境配置文件之一dev 开发环境项目通过激活对应 profile 来加载它文件内的数据库与 Redis 连接信息最终会注入到数据源与缓存组件的 Bean 中。关于「Spring Boot 如何从配置文件读取并绑定配置」可以参考同仓库的 Spring 如何优雅读取配置文件其中覆盖了Value与ConfigurationProperties两种绑定方式。第五步启动项目直接运行启动类XzsApplication即可不需要额外配置外部容器——Spring Boot 内置 Web 容器会自动拉起服务。启动成功后打开下面的链接即可跳转到对应的端学生系统地址http://localhost:8000/student管理端地址http://localhost:8000/admin特别注意这种启动方式下前端虽然也一并启动、可以访问但实际上是内嵌在后端项目中的。如果我们需要真正意义上的前后端分离部署则需要单独运行前端项目见下一节。前端部署Web 端小程序端的部署原文未展开演示这里以 Web 端为准。Web 端代码在uexam/source/vue目录下其中包含两个独立的前端工程xzs-admin管理端xzs-student学生端进入对应目录后分别对这两个工程执行下面两个命令。1. 下载相关依赖$ npm install2. 启动项目$ npm run serve启动完成之后打开下面的链接即可跳转到对应的端学生系统地址http://localhost:8001管理端地址http://localhost:8002此时前端走 8001/8002 端口独立运行与后端 8000 端口分离即可验证前后端分离架构下的接口调用链路。学习建议与总结从该项目中可以学到什么结合 springboot-guide 仓库的学习路径uexam 适合作为以下知识点的实战落地范本Spring Boot 2.0 工程化实践分层清晰的 Controller/Service/Dao 结构、配置文件多环境管理可对照 第一个 RestFul Web 服务 与 优雅整合 SpringBootMybatis 阅读MyBatis 实际使用多表查询、分页、事务等参考 SpringBootMybatis 多数据源配置 可以进一步理解多数据源场景前后端分离架构Vue 管理端/学生端 Spring Boot 后端的接口协作方式数据库与缓存配套PostgreSQL/MySQL Redis 的组合是考试类读多写少场景的典型选型容器化环境搭建用 Docker 快速拉起中间件环境降低本地环境搭建门槛。部署速查表步骤操作关键命令/文件1启动 PostgreSQLdocker run -d -p 5432:5432 --name postgresql -e POSTGRES_PASSWORD123456 postgres2启动 Redisdocker run -itd --name redis-test -p 6379:6379 redis3初始化数据库创建库xzs执行uexam/source/xzs/sql下脚本4修改配置uexam/source/xzs下application-dev.yml改为本地数据库/Redis 地址5启动后端运行XzsApplication访问 8000 端口前端内嵌6启动前端可选xzs-admin/xzs-student下npm installnpm run serve访问 8001/8002原文要点回顾uexam 是前后端分离的在线考试系统支持Web 端 微信小程序端提供MySQL 与 PostgreSQL 双数据库版本后端技术栈为Spring Boot 2.0 MyBatis Redis前端为Vue管理端业务顺序先建学科 → 再建题目 → 后组试卷 → 最后加学生学生年级需与学科年级匹配后端一键启动后前端静态资源内嵌直接访问 http://localhost:8000/student 与 http://localhost:8000/admin若需前后端分离部署则在uexam/source/vue下对xzs-admin、xzs-student分别执行npm install与npm run serve访问 8001/8002 端口。按照上述步骤你完全可以在一台装有 Docker 与 Node.js 的机器上把这款基于 Spring Boot 的在线考试系统从零跑起来并完整体验从出题到答题的完整考试流程。它既可以作为 Spring Boot 前后端分离实战的学习样例也可以直接改造为考试、测评类业务的基础框架属于「拿来即用」型的优质开源实战项目。赞分享文档教程后端【免费下载链接】springboot-guideSpringBoot2.0从入门到实战项目地址https://gitcode.com/gh_mirrors/sp/springboot-guide点击查看免费下载相关推荐5步掌握Spring Boot在线考试系统从零部署到实战应用5步掌握Spring Boot在线考试系统从零部署到实战应用 Spring Boot在线考试系统是一个功能完备的开源考试平台基于Spring Boot框架开人工智能大模型微调LoRACLI16步跑通Flame瓦片地图TMX加载、对象层与TileStack动效实战16步跑通Flame瓦片地图TMX加载、对象层与TileStack动效实战 凌晨两点策划把一张新关卡图丢给你同样的格子同样的怪物只是多了一堵墙。你盯着游戏开发图形学GitHub Pages完整指南5分钟创建免费静态网站GitHub Pages完整指南5分钟创建免费静态网站 想要快速搭建个人博客、技术文档或项目展示网站吗GitHub Pages是GitHub提供的免费静态网教程文档上一篇awesome-gpt-image-2-API-and-Prompts 电商实战指南用 GPT-Image-2 提示词批量产出高转化商品主图与广告下一篇Bash-it 自定义内容Custom Content完整指南五类扩展文件、git 忽略例外与 BASH_IT_CUSTOM 版本控制方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

【航天器】基于个人非线性6自由度航空航天器仿真(含四元数动力学、修正、数值线性化、LQR控制、非线性闭环验证和回归测试)Matlab实现

【航天器】基于个人非线性6自由度航空航天器仿真(含四元数动力学、修正、数值线性化、LQR控制、非线性闭环验证和回归测试)Matlab实现

✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &…

2026/10/13 18:03:43 阅读更多 →
【机器人】基于去中心化 PIBT 算法求解仓库多机器人取送任务,通过优先级继承和回溯机制规避碰撞与死锁,动态分配任务MATLAB 仿真

【机器人】基于去中心化 PIBT 算法求解仓库多机器人取送任务,通过优先级继承和回溯机制规避碰撞与死锁,动态分配任务MATLAB 仿真

✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &…

2026/10/13 18:03:43 阅读更多 →
机器学习项目复现指南:从代码到高分交付的完整实践

机器学习项目复现指南:从代码到高分交付的完整实践

简介:这是一份基于导师指导获评98分的机器学习论文复现项目,针对需要完成课程设计或毕业设计的计算机专业学生,以及希望提升工程能力的机器学习初学者。代码严格遵循原论文架构,包含数据预处理、模型构建、训练优化与性能评估全流…

2026/10/13 18:03:43 阅读更多 →

最新新闻

企业级Agent智能体落地实战:概念、场景与风险控制

企业级Agent智能体落地实战:概念、场景与风险控制

最近朋友圈刷屏的,基本离不开一个词:Agent,智能体。尤其是某家海外头部厂商又把Agent往前推了一大步,那句“给个目标就能干活”的Slogan,让不少技术圈的朋友原地兴奋了一把,也让一堆企业管理者心里直打鼓。…

2026/10/13 18:48:51 阅读更多 →
AI接口超时重试如何避免费用翻倍?重试策略与计费边界解析

AI接口超时重试如何避免费用翻倍?重试策略与计费边界解析

你有没有遇到过这样的情况:服务上线前压测一切正常,上线后碰上网络抖动,AI接口时不时超时。本着“失败就再试一次”的朴素直觉,你加了一段重试逻辑,日志里“重试成功”的占比还挺好看。结果月底对账时傻眼了——账单金…

2026/10/13 18:48:51 阅读更多 →
AI赋能项目经理的5个实战场景:需求拆解、任务分配、进度预警、风险推演与智能协同

AI赋能项目经理的5个实战场景:需求拆解、任务分配、进度预警、风险推演与智能协同

1. 这不是AI取代项目经理,而是给项目经理装上“增强现实眼镜”最近在几个跨部门协作项目里,我反复被问同一个问题:“AI真能替我们写需求文档、排甘特图、盯进度吗?”——问的人语气里带着将信将疑,还有点隐隐的焦虑。说…

2026/10/13 18:48:51 阅读更多 →
GAN从零实战:PyTorch对抗训练核心原理与稳定训练技巧

GAN从零实战:PyTorch对抗训练核心原理与稳定训练技巧

1. GAN到底在做什么:对抗训练的核心思路先聊个认知上的东西。很多刚接触GAN的同学,第一眼看到"对抗网络"这四个字,下意识觉得这是一个特别复杂、特别高深的模型,门槛肯定很高。实际上它背后的道理非常简单:你…

2026/10/13 18:48:51 阅读更多 →
Azure Blob Storage实战指南:从上传下载到权限与成本优化

Azure Blob Storage实战指南:从上传下载到权限与成本优化

第一次接触 Azure Blob Storage 的时候,我其实挺不屑的:一个对象存储服务,官方文档翻来覆去就是“创建账户、创建容器、上传文件、下载文件”这四板斧,感觉比操作本地文件夹还简单,能有什么坑?直到后来在某…

2026/10/13 18:48:51 阅读更多 →
C# SIMD真能碾压JS百万倍?性能基准测试深度拆解

C# SIMD真能碾压JS百万倍?性能基准测试深度拆解

这条标题发出来的时候,我就知道评论区要炸。C#碾压JS百万倍?谁信谁傻,谁骂谁亏。作为一个常年跟性能测试打交道的写代码的,我太清楚这种说法毛病出在哪:量尺不对,什么都白搭。真要较真,把同一个…

2026/10/13 18:47:50 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →