公司动态
SpringBoot+Vue实习管理系统开发与部署指南
1. 项目概述实习管理系统的技术栈与核心功能这套实习管理系统采用当前主流的前后端分离架构后端基于SpringBoot框架构建前端使用Vue.js实现交互界面数据存储选用MySQL关系型数据库。系统开箱即用解压后通过简单配置即可启动运行特别适合高校计算机专业学生作为毕业设计参考或是中小企业快速部署内部实习管理平台。我在实际部署测试中发现这套系统完整实现了实习管理全流程的数字化从学生实习申请、企业岗位发布到导师审核、考勤记录、成绩评定等环节都提供了标准化接口。系统默认包含三种角色权限学生、企业HR、学校管理员每种角色的操作界面和功能模块都做了清晰的权限隔离。2. 环境准备与项目配置2.1 基础软件安装清单要运行这套系统需要预先安装以下组件以Windows环境为例JDK 1.8推荐Amazon Corretto 11Node.js 14.x前端依赖管理MySQL 5.7建议8.0版本Maven 3.6后端依赖管理IDE工具IntelliJ IDEA后端开发VS Code前端开发特别注意MySQL安装时建议选择utf8mb4字符集避免中文乱码问题。我在测试中发现5.7版本需要手动调整my.ini中的以下参数[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci2.2 数据库初始化步骤创建数据库实例CREATE DATABASE internship_db DEFAULT CHARACTER SET utf8mb4;执行源码中的SQL脚本通常位于/sql目录mysql -u root -p internship_db init_table.sql mysql -u root -p internship_db init_data.sql修改后端配置application.ymlspring: datasource: url: jdbc:mysql://localhost:3306/internship_db?useSSLfalseserverTimezoneAsia/Shanghai username: your_username password: your_password3. 后端SpringBoot架构解析3.1 核心模块划分系统采用经典的三层架构设计controller层处理HTTP请求如InternshipApplyController.javaservice层业务逻辑实现如StudentServiceImpl.javadao层数据库操作基于MyBatis-Plus实现// 典型Controller示例 RestController RequestMapping(/api/internship) public class InternshipController { Autowired private InternshipService internshipService; PostMapping(/apply) public ResultVO apply(RequestBody ApplyDTO dto) { return internshipService.processApply(dto); } }3.2 特色功能实现动态权限控制通过自定义注解RequiresRoles(admin)实现方法级权限校验Excel导入导出使用Alibaba EasyExcel处理批量数据操作日志审计基于AOP记录关键操作日志JWT认证采用无状态token实现跨域认证4. 前端Vue工程详解4.1 项目结构说明src/ ├── api/ # 接口定义 ├── assets/ # 静态资源 ├── components/ # 公共组件 ├── router/ # 路由配置 ├── store/ # Vuex状态管理 ├── utils/ # 工具类 └── views/ # 页面组件4.2 关键技术点实现路由懒加载提升首屏加载速度const routes [ { path: /apply, component: () import(/views/apply/index.vue) } ]Axios封装统一处理请求/响应service.interceptors.response.use( response { if (response.data.code ! 200) { Message.error(response.data.msg) return Promise.reject(new Error(response.data.msg)) } return response.data } )权限指令控制按钮级显示el-button v-permissioninternship:apply申请/el-button5. 系统部署与运维5.1 后端打包与启动使用Maven打包mvn clean package -DskipTests运行JAR包java -jar target/internship-system-1.0.0.jar5.2 前端生产环境构建安装依赖npm install --registryhttps://registry.npm.taobao.org构建静态资源npm run build部署到Nginxserver { listen 80; server_name localhost; location / { root /path/to/dist; index index.html; try_files $uri $uri/ /index.html; } location /api { proxy_pass http://localhost:8080; } }6. 常见问题解决方案6.1 跨域问题处理开发环境下可在vue.config.js中配置代理devServer: { proxy: { /api: { target: http://localhost:8080, changeOrigin: true } } }6.2 数据库连接池报错调整application.yml中的连接池参数spring: datasource: hikari: maximum-pool-size: 20 connection-timeout: 30000 idle-timeout: 600000 max-lifetime: 18000006.3 前端内存溢出修改package.json的启动命令scripts: { serve: node --max_old_space_size4096 node_modules/vue/cli-service/bin/vue-cli-service.js serve }7. 功能扩展建议短信通知集成接入阿里云短信服务实现重要操作提醒文件云存储使用MinIO搭建私有云存储管理实习报告等文档数据可视化引入ECharts展示实习数据统计报表微信小程序端基于uni-app开发移动端应用我在实际二次开发中发现系统预留了良好的扩展接口。例如要添加短信功能只需在MessageService接口中添加新的实现类然后通过ConditionalOnProperty注解实现条件装配Service ConditionalOnProperty(name sms.enabled, havingValue true) public class AliyunSmsServiceImpl implements MessageService { // 实现具体短信发送逻辑 }这套源码的架构设计充分考虑了扩展性各个模块之间通过清晰的接口定义实现松耦合非常适合作为技术学习样本。对于初学者建议先从权限管理和前后端数据流转这两个核心流程入手分析再逐步深入其他模块