基于SpringBoot+Vue+MySQL的完整员工绩效管理系统实战指南
🚀 30+款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度
这次我们来看一个基于 Java + Vue + SpringBoot + MySQL 的“员工绩效考核管理系统”毕业设计项目。这是一个典型的、可直接用于毕业答辩的完整企业级应用,包含了前后端源码、数据库脚本、配套文档和部署教程,并且是开源免费的。对于正在寻找毕业设计选题,或者想学习如何将 SpringBoot、Vue 和 MySQL 整合起来构建一个完整管理系统的同学来说,这个项目提供了一个非常清晰的实战模板。
项目的核心价值在于其完整性和可复用性。它不是一个简单的 CRUD 演示,而是模拟了企业内员工绩效考核的真实业务流程,涵盖了从用户权限管理、考核指标设定、绩效数据录入、评分计算到结果统计分析的全过程。技术栈选型也是当前企业开发的主流组合:SpringBoot 负责后端 API 和业务逻辑,Vue.js 构建现代化的前端界面,MySQL 作为数据存储。这意味着你不仅能得到一个可以运行的毕业设计作品,更能通过它深入理解前后端分离架构的开发流程、数据库设计以及模块化编程思想。
本文将带你从零开始,完成这个系统的本地环境搭建、项目启动、功能测试以及核心代码解读。我们会重点关注几个关键点:如何快速配置开发环境(JDK、Maven、Node.js、MySQL),如何一键导入并启动前后端项目,如何理解系统的核心业务模块,以及如何进行二次开发以满足你的个性化需求。无论你是 Java 后端新手,还是对 Vue 前端感兴趣,这篇文章都能提供一条清晰的实践路径。
1. 核心能力速览
在深入细节之前,我们先通过一个表格快速了解这个项目的核心规格和特点,让你判断它是否符合你的需求。
| 能力项 | 说明 |
|---|---|
| 项目类型 | 企业级 Web 管理系统(毕业设计/课程设计) |
| 技术栈 | 后端:Java + SpringBoot + MyBatis/MyBatis-Plus + Maven 前端:Vue.js + Element UI + Axios 数据库:MySQL 5.7 / 8.0 |
| 核心功能 | 用户权限管理(RBAC)、部门管理、员工管理、考核指标管理、绩效任务发布、员工自评/上级评分、绩效结果统计与图表展示 |
| 部署方式 | 本地开发环境部署(需手动配置),支持 IDEA/Eclipse 导入,提供 SQL 脚本初始化数据库 |
| 硬件门槛 | 无特殊要求。普通 PC 即可,需要安装 JDK 1.8+、Node.js 14+、MySQL。内存建议 4GB 以上。 |
| 启动方式 | 后端:通过 IDE 运行 SpringBoot 主类,或使用mvn spring-boot:run命令启动。前端:进入前端目录,执行 npm install安装依赖,再执行npm run serve启动开发服务器。 |
| 是否支持 API | 是。后端提供完整的 RESTful API,前端通过 Axios 调用。可用于接口测试或与其他系统集成。 |
| 是否支持批量操作 | 部分支持。例如,可能支持批量导入员工信息、批量发布考核任务等(具体取决于项目实现)。 |
| 配套资源 | 包含完整源码、SQL 数据库文件、项目文档、答辩 PPT/论文参考模板(通常开源项目会提供)。 |
| 适合场景 | 1.计算机相关专业毕业设计/课程设计 2.Java 全栈开发初学者实战练习 3.企业内部小型绩效管理原型系统搭建参考 |
2. 适用场景与使用边界
这个项目主要面向几类用户:
- 高校计算机专业毕业生:如果你正在为 Java Web 方向的毕业设计发愁,这个项目提供了一个结构清晰、功能完整、技术栈流行的现成选题。你可以直接部署运行,在此基础上修改界面、增加功能模块或优化业务逻辑,快速形成自己的毕业作品。
- Java 或 Vue 初学者:对于想学习 SpringBoot + Vue 前后端分离开发的同学,这是一个非常好的“脚手架”项目。你可以通过阅读源码,理解控制器(Controller)、服务(Service)、数据访问层(Mapper)的分层架构,以及前端路由、组件通信、API 调用的具体实现。
- 需要快速搭建原型系统的开发者:如果你需要为一个中小型团队或企业内部开发一个简单的绩效考核工具,这个项目的核心模块(用户、考核、评分、统计)可以直接复用或作为设计参考,节省从零开始的开发时间。
使用边界与注意事项:
- 非生产级:作为毕业设计项目,它更侧重于演示核心业务流程和技术实现,在安全性(如 SQL 注入防护、XSS 攻击)、高并发、数据备份、系统监控等方面可能未做深度优化。不建议直接用于对稳定性和安全性要求极高的正式生产环境。
- 业务逻辑简化:真实的绩效考核系统通常涉及复杂的权重计算、360度评估、流程审批等。本项目实现的业务逻辑相对标准,你可能需要根据实际考核方案进行定制化开发。
- 版权与合规:项目源码通常是开源(如 MIT、GPL 协议)或免费用于学习目的的。在使用时,请遵守项目作者声明的开源协议。如果用于商业用途或二次分发,务必仔细阅读协议条款。系统中涉及的用户数据、绩效信息均为模拟数据,在实际使用时需注意用户隐私和数据安全合规。
3. 环境准备与前置条件
在开始部署之前,请确保你的本地开发环境已安装以下必要软件,并达到指定版本要求。
Java 开发环境:
- JDK:版本 1.8 或更高(推荐 JDK 8, 11, 17)。这是运行 SpringBoot 项目的基石。
- 验证命令:打开终端或命令提示符,输入
java -version和javac -version,确认版本信息。 - IDE:IntelliJ IDEA(推荐)或 Eclipse。IDEA 对 SpringBoot 和 Maven 的支持更友好。
项目管理与构建工具:
- Maven:版本 3.6+。用于管理项目依赖、编译和打包。
- 验证命令:输入
mvn -v,确认 Maven 已正确安装并配置了环境变量。
数据库:
- MySQL:版本 5.7 或 8.0。这是项目的数据存储。
- 需要准备:安装 MySQL 服务,并记住 root 用户的密码。同时,你需要一个数据库客户端工具,如 MySQL Workbench、Navicat 或 IDEA 自带的 Database 工具,用于执行 SQL 脚本。
前端开发环境:
- Node.js:版本 14.x 或 16.x(建议使用 LTS 版本)。它自带了 npm 包管理工具。
- 验证命令:输入
node -v和npm -v,确认版本信息。 - 包管理器:可以使用 npm,也可以安装
yarn或pnpm以加速依赖安装(根据项目前端package.json的配置而定)。
版本控制工具(可选但推荐):
- Git:用于从代码仓库(如 Gitee、GitHub)克隆项目源码。
浏览器:
- 用于访问系统前端界面,推荐 Chrome、Edge 或 Firefox 的最新版本。
环境检查清单:
- [ ] JDK 1.8+ 已安装并配置
JAVA_HOME - [ ] Maven 3.6+ 已安装并配置环境变量
- [ ] MySQL 5.7/8.0 已安装,服务正在运行
- [ ] Node.js 14+/16+ 及 npm 已安装
- [ ] IDE(IDEA/Eclipse)已准备就绪
- [ ] 代码仓库地址或项目源码压缩包已获取
4. 安装部署与启动方式
假设你已经从开源平台(如 Gitee)下载或克隆了名为employee-performance-management的项目。通常项目结构如下:
employee-performance-management/ ├── backend/ # SpringBoot 后端项目 │ ├── src/ │ ├── pom.xml │ └── ... ├── frontend/ # Vue 前端项目 │ ├── public/ │ ├── src/ │ ├── package.json │ └── ... ├── database/ # 数据库脚本 │ └── performance_management.sql └── docs/ # 相关文档4.1 数据库初始化
这是第一步,也是至关重要的一步。
- 创建数据库:使用 MySQL 客户端连接你的 MySQL 服务。
- 执行 SQL 脚本:新建一个数据库,例如命名为
performance_db,字符集建议使用utf8mb4,排序规则为utf8mb4_general_ci。CREATE DATABASE `performance_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; - 导入数据:选择
performance_db数据库,然后执行database/performance_management.sql文件。这个脚本会创建所有必要的表(如用户表sys_user、角色表sys_role、菜单表sys_menu、绩效表perf_assessment等),并可能插入初始的管理员账号和基础数据。# 使用命令行导入的示例(需在脚本所在目录) mysql -u root -p performance_db < performance_management.sql
4.2 后端项目配置与启动
- 导入项目:用 IntelliJ IDEA 打开(或导入)
backend文件夹。IDEA 会自动识别为 Maven 项目并开始下载依赖。 - 修改配置文件:找到后端项目的配置文件,通常是
src/main/resources/application.yml或application.properties。你需要修改数据库连接信息,使其指向你刚创建的数据库。
注意:如果项目使用 MyBatis-Plus,可能还有相关配置,一般保持默认即可。# application.yml 示例 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/performance_db?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: root # 你的数据库用户名 password: your_password # 你的数据库密码 - 启动后端服务:
- 方式一(IDEA):找到主启动类(通常名为
XxxApplication,例如PerformanceManagementApplication),右键点击Run。 - 方式二(命令行):在
backend目录下打开终端,执行mvn spring-boot:run。
- 方式一(IDEA):找到主启动类(通常名为
- 验证启动:看到控制台输出类似
Started XxxApplication in X.XXX seconds (JVM running for X.XXX)的信息,并且没有报错,说明后端启动成功。默认情况下,SpringBoot 应用可能运行在http://localhost:8080。你可以访问http://localhost:8080/doc.html或http://localhost:8080/swagger-ui.html(如果集成了 Swagger)来查看 API 文档,确认接口服务已就绪。
4.3 前端项目配置与启动
- 安装依赖:在终端中,进入
frontend目录,执行以下命令安装项目所需的所有 npm 包。cd frontend npm install # 如果网络较慢,可以使用淘宝镜像:npm install --registry=https://registry.npmmirror.com - 配置 API 地址:前端需要知道后端 API 的地址。通常这个配置在
frontend目录下的配置文件中,如.env.development、.env或vue.config.js中的devServer.proxy设置。你需要检查并确保它指向正在运行的后端地址(例如http://localhost:8080)。
注意:有些项目可能将 API 地址直接写在// vue.config.js 示例 - 配置开发环境代理 module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:8080', // 后端地址 changeOrigin: true, pathRewrite: { '^/api': '' } } } } }src/utils/request.js这样的 Axios 封装文件中,请根据项目实际情况调整。 - 启动前端开发服务器:在
frontend目录下执行:
命令执行成功后,终端会输出类似下面的信息:npm run serveApp running at: - Local: http://localhost:8081/ - Network: http://192.168.x.x:8081/ - 访问系统:打开浏览器,访问终端输出的本地地址(如
http://localhost:8081)。你应该能看到系统的登录界面。
4.4 登录系统
使用数据库脚本中初始化的管理员账号登录。常见的默认账号密码是admin / 123456或admin / admin。具体请查看项目文档或 SQL 脚本中的注释。登录成功后,即可进入系统主界面,开始功能测试。
5. 功能测试与效果验证
成功启动系统后,我们需要对核心功能模块进行逐一测试,确保系统运行正常,并理解其业务流程。
5.1 用户与权限管理测试
这是系统的基础,通常采用 RBAC(角色基于权限控制)模型。
- 测试目的:验证系统管理员能否管理用户、角色和菜单权限。
- 操作步骤:
- 使用管理员账号登录。
- 在系统管理或类似菜单下,找到【用户管理】。
- 新增用户:点击“新增”,输入新用户信息(如工号、姓名、部门),并为其分配一个角色(如“部门经理”、“普通员工”)。
- 角色管理:进入【角色管理】,查看现有角色(如 admin, hr, manager, employee)。尝试编辑一个角色,修改其拥有的菜单权限。
- 菜单管理:进入【菜单管理】,查看系统的菜单树结构。这里定义了前端页面的导航和访问权限。
- 预期结果:
- 新增用户成功后,该用户应能使用分配的账号密码登录。
- 修改角色权限后,属于该角色的用户登录后,侧边栏菜单和页面操作按钮会相应变化(例如,普通员工可能看不到“用户管理”菜单)。
- 判断成功:新用户能登录且界面权限符合角色设定。
5.2 考核指标管理测试
这是绩效考核的核心配置。
- 测试目的:验证管理员或 HR 能否定义考核的维度(KPI)和标准。
- 操作步骤:
- 进入【考核指标管理】或【KPI 管理】。
- 新增指标:创建一个新的考核指标,例如“工作完成度”,并设置其类型(定量/定性)、满分值、权重、考核周期(月度/季度/年度)等。
- 指标分类:可能支持对指标进行分类,如“业绩类”、“能力类”、“态度类”。
- 预期结果:创建的考核指标能够被后续的绩效任务所引用。
- 判断成功:在创建绩效任务时,可以选择到刚才新增的指标。
5.3 绩效任务发布与执行测试
模拟一次完整的绩效考核流程。
- 测试目的:验证从发布考核任务到员工完成自评、上级评分的全过程。
- 操作步骤:
- 发布任务:以管理员或部门经理身份,进入【绩效任务管理】。点击“发布新任务”,选择考核周期、被考核人(可以多选)、需要考核的指标集合,并设置任务起止时间。
- 员工自评:退出管理员账号,使用一个普通员工账号登录。在【我的绩效】或【待办任务】中,应能看到刚发布的绩效任务。点击进入,根据指标填写自评分数和说明,然后提交。
- 上级评分:换回部门经理账号登录。在【绩效评审】或【待办任务】中,应能看到下属员工已提交的自评任务。点击进入,进行评分,并可以填写评语,然后提交。
- 流程状态:在整个过程中,注意观察任务状态的变化,如“待自评”、“已自评(待上级评)”、“已完成”等。
- 预期结果:流程能顺畅流转,数据能正确保存,状态能实时更新。
- 判断成功:员工提交自评后,经理端能立即看到并评分;评分完成后,任务状态变为“已完成”,且双方都能查看最终结果。
5.4 绩效结果统计与报表测试
检验系统的数据分析和可视化能力。
- 测试目的:验证系统能否对历史绩效数据进行多维度统计和图表展示。
- 操作步骤:
- 完成几次模拟的绩效考核流程,生成一些数据。
- 进入【绩效统计】或【报表中心】。
- 选择不同的查询条件,如时间范围、部门、员工。
- 查看系统生成的统计列表、柱状图、折线图或雷达图。常见的图表有:部门平均分对比、员工绩效趋势、指标得分分布等。
- 预期结果:系统能根据查询条件,从数据库聚合数据,并以表格和图表的形式清晰展示。
- 判断成功:图表能正常渲染,数据与之前录入的绩效分数逻辑一致。
6. 接口 API 与批量任务
作为一个前后端分离的项目,后端提供了一系列 RESTful API 供前端调用。理解这些 API 对于二次开发和接口测试非常重要。
6.1 API 接口概览与测试
项目通常会集成 Swagger 或 Knife4j 等 API 文档工具。启动后端后,访问http://localhost:8080/doc.html(Knife4j)或http://localhost:8080/swagger-ui.html(Swagger),你可以看到所有接口的详细列表、参数说明和在线测试功能。
常见接口分类:
- 认证授权:
/auth/login(POST 登录),/auth/logout(POST 登出)。 - 用户管理:
/user/list(GET 分页查询),/user/add(POST 新增),/user/update(PUT 修改),/user/delete/{id}(DELETE 删除)。 - 绩效任务:
/assessment/task/page(GET 任务分页),/assessment/task/publish(POST 发布任务),/assessment/self/submit(POST 提交自评),/assessment/manager/score(POST 上级评分)。 - 数据统计:
/statistics/dept/avg(GET 部门平均分),/statistics/employee/trend(GET 员工绩效趋势)。
- 认证授权:
使用 Postman 或 curl 测试 API: 你可以使用工具直接调用后端 API,绕过前端界面进行测试。这有助于定位问题是出在前端还是后端。
# 示例:使用 curl 测试登录接口 curl -X POST "http://localhost:8080/auth/login" \ -H "Content-Type: application/json" \ -d '{"username":"admin", "password":"123456"}'如果返回包含
token的 JSON 数据,说明登录成功。后续请求需要在 Header 中带上这个 Token(如Authorization: Bearer your_token)以通过身份验证。
6.2 批量任务处理
虽然作为毕业设计,复杂的异步队列(如 RabbitMQ)可能不是重点,但系统通常会实现一些简单的批量操作。
- 批量导入员工:系统可能提供一个 Excel 模板,下载后填写员工信息,然后通过【用户管理】页面的“导入”功能,一次性将多名员工信息录入系统。这背后对应一个文件上传和解析的接口。
- 批量发布考核:在发布绩效任务时,可以选择多个被考核人,这本质上就是后端循环处理,为每个选中的员工创建一条考核任务记录。
- 实现思路:在二次开发时,如果遇到需要处理大量数据的场景(如计算全公司年度绩效总分),可以考虑:
- 在后端 Service 层编写批量处理方法。
- 对于非常耗时的操作,可以引入
@Async注解实现异步执行,避免前端请求超时。 - 提供任务进度查询接口,让前端可以轮询进度。
7. 核心代码解读与二次开发指引
要真正掌握这个项目,并将其改造为自己的毕业设计,阅读和理解核心代码是必经之路。
7.1 后端核心代码结构
src/main/java/com/example/performance/ ├── config/ # 配置类(WebConfig, SecurityConfig, MybatisPlusConfig) ├── controller/ # 控制器层,接收请求,调用Service,返回结果 │ ├── AuthController.java # 认证相关 │ ├── UserController.java # 用户管理 │ ├── AssessmentController.java # 绩效管理 │ └── StatisticsController.java # 数据统计 ├── service/ # 服务层,核心业务逻辑 │ ├── impl/ # 服务实现类 │ └── ... # 服务接口 ├── mapper/ # 数据访问层(MyBatis Mapper接口) ├── entity/ # 实体类,与数据库表对应 ├── dto/ # 数据传输对象(用于前后端交互) ├── vo/ # 视图对象(用于返回给前端的数据封装) └── common/ # 通用工具类、常量、异常处理等- 关键实体 (Entity):
User(用户),Role(角色),Menu(菜单),AssessmentTask(绩效任务),AssessmentItem(考核项),AssessmentScore(评分记录)。理解它们之间的关系(一对一、一对多)是理解业务的基础。 - 关键控制器 (Controller):以
AssessmentController为例,它定义了发布任务、提交自评、上级评分等接口。每个方法上都有@RequestMapping或@PostMapping、@GetMapping等注解,定义了 API 路径和请求方法。 - 关键服务 (Service):业务逻辑的核心。例如
AssessmentServiceImpl.publishTask()方法,内部会进行参数校验、生成任务数据、遍历被考核人创建子任务、保存到数据库等操作。
7.2 前端核心代码结构
src/ ├── api/ # 封装所有后端API请求 │ └── assessment.js # 绩效相关的API函数 ├── router/ # Vue Router 路由配置 ├── store/ # Vuex 状态管理(如果使用) ├── views/ # 页面组件 │ ├── assessment/ # 绩效管理相关页面 │ │ ├── TaskPublish.vue # 发布任务页面 │ │ ├── SelfAssessment.vue # 自评页面 │ │ └── ... │ └── system/ # 系统管理页面 ├── components/ # 可复用的公共组件 ├── utils/ # 工具函数(如request.js封装axios) └── App.vue # 根组件- API 封装 (
utils/request.js):这里通常用 Axios 创建了一个实例,并配置了请求拦截器(自动添加 Token)和响应拦截器(统一处理错误)。 - 页面组件 (
views/):每个.vue文件是一个页面。在TaskPublish.vue中,你会看到表单元素、数据绑定 (v-model)、方法 (methods),以及调用api/assessment.js中函数来发布任务的代码。 - 路由守卫 (
router/index.js):这里实现了权限控制,例如检查用户是否登录,如果没有登录则跳转到登录页;或者根据用户角色动态生成可访问的路由。
7.3 二次开发建议
- 修改主题或样式:前端使用了 Element UI,你可以通过修改
src/styles/下的文件或覆盖 Element UI 的 SCSS 变量来改变整体主题色。 - 增加新功能模块:例如,增加一个【绩效面谈记录】模块。
- 后端:在
entity包下创建InterviewRecord实体类;在mapper包下创建对应的 Mapper 接口和 XML 文件;在service包下创建服务和实现;在controller包下创建控制器,提供增删改查接口。 - 前端:在
views/下创建interview/目录和页面组件;在router/index.js中配置新路由;在api/下创建interview.js封装接口调用。
- 后端:在
- 优化现有功能:例如,在绩效统计页面增加导出 Excel 报表的功能。后端可以使用 Apache POI 或 EasyExcel 库生成 Excel 文件,前端通过 API 下载。
8. 常见问题与排查方法
在部署和运行过程中,你可能会遇到以下问题。这里提供通用的排查思路。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 后端启动失败,端口被占用 | 8080 端口已被其他程序(如另一个 SpringBoot 应用、Tomcat)使用。 | 1. 查看启动日志中的错误信息。 2. 使用命令 netstat -ano | findstr :8080(Windows) 或lsof -i:8080(Mac/Linux) 查找占用进程。 | 1. 终止占用端口的进程。 2. 修改 application.yml中的server.port为其他端口,如8081。 |
前端npm install失败 | 1. 网络问题,无法连接 npm 仓库。 2. Node.js 版本与项目不兼容。 3. 项目依赖包有冲突。 | 1. 检查网络连接。 2. 查看错误日志,通常会有明确提示。 3. 使用 node -v和npm -v检查版本。 | 1. 使用淘宝镜像:npm config set registry https://registry.npmmirror.com,然后重试。2. 使用 nvm切换 Node.js 版本至项目推荐版本。3. 删除 node_modules和package-lock.json,重新执行npm install。 |
| 前端启动后,页面空白或报错 | 1. 后端服务未启动或地址配置错误。 2. 前端路由模式(history/hash)与服务器配置不符(生产环境问题)。 3. 浏览器缓存。 | 1. 按 F12 打开浏览器开发者工具,查看 Console 和 Network 标签页的报错信息。 2. 确认后端 API 地址是否正确,尝试直接访问一个后端接口(如 http://localhost:8080/user/list)看是否通。 | 1. 确保后端服务已启动,并检查前端配置的代理或 API 基础地址。 2. 开发环境下,通常使用 hash路由模式可避免此问题(在router/index.js中设置mode: 'hash')。3. 清除浏览器缓存或使用无痕模式。 |
| 登录失败,提示“用户名或密码错误” | 1. 数据库连接失败,导致查询不到用户。 2. 数据库中没有初始化的管理员账号。 3. 密码加密方式不匹配。 | 1. 检查后端启动日志,看是否有数据库连接异常。 2. 登录 MySQL,检查 sys_user表中是否有数据。3. 查看后端 AuthService中密码校验的逻辑(通常是使用 BCrypt 加密)。 | 1. 核对application.yml中的数据库连接信息。2. 重新执行 SQL 脚本,或手动插入一条用户数据(注意密码需加密)。 3. 如果手动插入,密码需要使用项目指定的加密工具类(如 BCryptPasswordEncoder)生成密文。 |
| 页面提示“无权限访问” | 1. 当前登录用户的角色没有该页面或操作的权限。 2. 前端路由守卫或后端接口拦截器校验失败。 | 1. 检查该用户被分配的角色和角色拥有的菜单/权限。 2. 查看浏览器 Network 中请求该页面或接口的返回状态码(可能是 403)。 | 1. 用管理员账号登录,在【角色管理】中为该角色分配相应的菜单权限。 2. 检查后端对应接口的权限注解(如 @PreAuthorize("hasRole('ADMIN')"))是否与用户角色匹配。 |
| 性能统计图表不显示 | 1. 前端图表库(如 ECharts)未正确引入或版本问题。 2. 后端统计接口返回的数据格式不符合图表组件要求。 3. 浏览器控制台有 JavaScript 错误。 | 1. 按 F12 查看 Console 是否有关于图表库的报错。 2. 在 Network 中查看调用统计接口的返回数据,检查其结构。 | 1. 确认package.json中包含了 ECharts 等图表库依赖,并已正确安装。2. 对比后端返回的数据与前端图表组件 option中要求的series.data格式是否一致。可能需要调整后端数据封装或前端数据处理逻辑。 |
9. 项目打包与部署
完成本地开发和测试后,你可能需要将项目打包,用于演示或部署到服务器。
9.1 后端打包
在backend目录下,执行 Maven 打包命令:
mvn clean package -DskipTests命令执行成功后,会在target/目录下生成一个xxx.jar文件(如performance-management-0.0.1-SNAPSHOT.jar)。这个 Jar 包包含了所有依赖和资源,可以直接运行。
9.2 前端打包
在frontend目录下,执行 Vue 的构建命令:
npm run build命令执行成功后,会生成一个dist/目录,里面是压缩和优化后的静态文件(HTML, CSS, JS)。
9.3 生产环境部署
有两种常见方式:
方式一:前后端分离部署
- 将后端 Jar 包上传到服务器,使用
java -jar xxx.jar --spring.profiles.active=prod命令启动(prod配置文件需配置生产环境的数据库等)。 - 将前端
dist/目录下的所有文件,放到 Nginx 或 Apache 的静态资源目录下。 - 配置 Nginx,将 API 请求反向代理到后端服务。
# nginx.conf 示例片段 server { listen 80; server_name your-domain.com; # 你的域名或IP location / { root /path/to/frontend/dist; # 前端静态文件路径 index index.html; try_files $uri $uri/ /index.html; # 支持Vue Router的history模式 } location /api/ { proxy_pass http://localhost:8080/; # 后端服务地址 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- 将后端 Jar 包上传到服务器,使用
方式二:前后端整合部署(简易)
- 将前端
dist/目录下的所有文件,复制到后端项目的src/main/resources/static/目录下(打包前)。 - 重新打包后端 Jar 包。这样 Jar 包就同时包含了前端资源。
- 在服务器上运行这个 Jar 包,访问
http://服务器IP:端口即可看到完整应用。SpringBoot 会自动服务静态资源。
- 将前端
10. 总结与下一步
这个“员工绩效考核管理系统”毕业设计项目,提供了一个从零到一构建一个完整 Web 应用的绝佳范例。通过亲手部署、运行和测试它,你不仅能得到一个可以直接用于答辩的作品,更能深入理解以下关键技术点:SpringBoot 如何简化后端开发、Vue 如何构建交互式前端、MyBatis 如何操作数据库、以及前后端如何通过 RESTful API 进行协作。
最值得尝试的下一步:
- 深度定制:不要只满足于运行。尝试修改系统名称、Logo、主题色,让它看起来像是为你“量身定制”的。
- 业务逻辑改造:研究现有的绩效考核流程,思考是否可以加入“同事互评”、“绩效申诉”、“面谈记录”等新模块,并动手实现。这是体现你个人能力和项目深度的关键。
- 代码优化与学习:仔细阅读源码,特别是服务层 (
Service) 的业务逻辑和数据传输对象 (DTO) 的设计。尝试理解为什么这样分层,并思考是否有优化空间(例如引入缓存 Redis 来提升统计查询速度)。 - 部署上线:尝试将项目部署到一台云服务器(如学生优惠的云主机),并绑定一个域名。这个过程会让你接触到 Linux 操作、环境配置、域名解析、Nginx 配置等运维知识,让你的毕业设计更加完整。
最容易踩的坑:
- 环境配置不一致:确保团队所有成员(或你的不同电脑)的 JDK、Node、MySQL 版本一致,最好使用文档记录。
- 数据库字符集问题:如果插入中文出现乱码,检查 MySQL、连接字符串、甚至表字段的字符集是否都是
utf8mb4。 - 前后端联调跨域:开发时,前端
npm run serve和后端spring-boot:run在不同端口,浏览器会因同源策略阻止请求。解决方案是在后端配置CORS(项目通常已配置),或使用前端代理(vue.config.js中的devServer.proxy)。
建议将本文作为你的项目启动手册,结合项目自身的README.md文档,一步步操作。遇到具体问题,多查看日志、多使用搜索引擎、多阅读源码,这是解决问题和提升能力最快的方式。这个项目就像一辆组装好的汽车,本文给了你钥匙和地图,现在,启动它,并试着开去更远的地方吧。
🚀 30+款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度
