前言
大家好。经过这段时间的实训,我们的校园报修管理系统项目终于完成了。这篇博客是我的第三篇实训博客,也是最后一篇。我想从整体上总结一下这次实训的收获,包括项目中遇到的难点、解决问题的思路,以及我个人的学习成长。
一、项目整体回顾
1.1 项目简介
我们的项目是一个校园报修管理系统,旨在解决校园内设施设备报修流程繁琐、效率低下的问题。系统实现了从报修申请、工单分配、维修处理到完成验收的全流程管理。
1.2 团队分工
我们小组共有5名成员,具体分工如下:
1.3 我的工作内容
作为后端/联调工程师,我主要完成了以下工作:
1. 项目管理方面
- 参与制定团队分工排期表
- 协助组长进行项目进度跟踪
- 组织前后端联调讨论
2. 技术开发方面
- 开发报修工单管理模块(增删改查接口)
- 开发校园物资管理模块(含权限控制)
- 开发物资申请管理模块(含审批流程)
- 系统集成测试与BUG修复
3. 联调协作方面
- 与前端同学对接接口
- 解决跨域、数据格式等联调问题
二、项目难点与挑战
在项目开发过程中,我们遇到了不少难点,这里挑几个有代表性的和大家分享。
2.1 难点一:前后端联调问题
问题描述:
项目初期,前后端各自开发,到联调阶段才发现很多问题:
- 接口字段名不统一
- 数据格式不一致
- 跨域问题
- 日期格式不匹配
解决思路:
第一步:制定接口规范
- 统一使用RESTful风格
- 统一返回格式(code、msg、data)
- 统一命名规范(驼峰命名)
- 统一日期格式(yyyy-MM-dd HH:mm:ss)
第二步:配置跨域
心得体会:
联调问题一定要提前预防,不要等到最后才发现。沟通也很重要,有问题及时和前端同学交流,不要自己憋着。
2.2 难点二:权限控制设计
问题描述:
系统有三种角色:管理员、学生、维修人员,不同角色有不同的操作权限。如何设计一个简单但有效的权限控制机制?
解决思路:
方案一:基于请求头的简单权限控制(我们采用的方案)
前端在请求头中携带用户角色:
X-User-Role: admin后端在Controller层进行权限校验:
方案二:Spring Security(更专业但更复杂)
- 功能强大,支持细粒度权限控制
- 学习成本高,对于小项目有点"杀鸡用牛刀"
- 时间充裕的话可以考虑使用
方案对比:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 请求头方式 | 简单易懂,上手快 | 安全性一般,不够灵活 | 小型项目、实训项目 |
| Spring Security | 功能强大,安全性高 | 学习成本高,配置复杂 | 中大型项目、生产环境 |
| JWT + 拦截器 | 无状态,支持分布式 | 需要自己实现很多逻辑 | 前后端分离项目 |
心得体会:
技术选型没有最好,只有最合适。对于实训项目来说,简单易用是第一位的,能快速实现功能最重要。当然,如果时间充裕,学习一下Spring Security也是很好的。
2.3 难点三:数据一致性问题
问题描述:
在物资申请审批通过后,需要同时更新申请状态。如果只更新了一个,就会出现数据不一致的问题。
解决思路:
方法一:事务控制
使用@Transactional注解保证操作的原子性:
@ServicepublicclassApplicationServiceImpl{@Transactional(rollbackFor=Exception.class)publicbooleanapproveApplication(IntegerappId,IntegergoodsId,Integerquantity){// 1. 更新申请状态intresult1=updateApplicationStatus(appId,"审批通过");// 2. 扣减库存intresult2=decreaseStock(goodsId,quantity);returnresult1>0&&result2>0;}}方法二:数据库事务
在SQL层面使用事务:
BEGIN;UPDATEgoods_applicationSETstatus='审批通过'WHEREid=?;UPDATEcampus_goodsSETstock_num=stock_num-?WHEREid=?;COMMIT;心得体会:
数据一致性是后端开发必须考虑的问题。涉及多个表的修改操作,一定要用事务保证原子性,要么都成功,要么都失败。不然出现数据不一致的问题,排查起来会很麻烦。
2.4 难点四:团队协作与代码合并
问题描述:
多人同时开发,代码如何合并?如何避免冲突?
解决思路:
1. 使用Git进行版本控制
- 每个人在自己的分支上开发
- 定期合并到主分支
- 提交前先pull最新代码
2. 制定代码规范
- 统一命名规范
- 统一代码格式
- 提交时写清楚注释
3. 定期代码review
- 每天站会同步进度
- 每周进行一次代码review
- 发现问题及时修正
踩坑记录:Git冲突
有一次我和另一个同学同时修改了同一个文件的同一个地方,合并的时候出现了冲突。后来我们约定,尽量不要同时修改同一个文件,如果必须修改,提前沟通好。冲突后不要慌,仔细看清楚哪些是自己的代码,哪些是别人的,再决定如何合并。
三、问题解决思路总结
通过这次项目,我总结了一套解决问题的方法论:
3.1 遇到问题怎么办?
第一步:读懂错误信息
- 仔细看错误提示
- 找到关键的错误信息
- 定位出错的代码位置
第二步:分析问题原因
- 是配置问题?还是代码逻辑问题?
- 是环境问题?还是数据问题?
- 是自己的问题?还是别人的问题?
第三步:搜索解决方案
- 百度/Google搜索错误信息
- 利用AI工具解决问题
- 在技术社区提问(Stack Overflow、CSDN等)
第四步:尝试解决
- 按照找到的方案尝试
- 每次只改一个地方
- 改完及时测试验证
第五步:总结记录
- 问题解决后记录下来
- 分析根本原因
- 思考如何避免下次再犯
3.2 常用调试技巧
1. 打印日志
System.out.println("debug: "+variable);// 或者使用日志框架log.info("订单信息:{}",order);2. 断点调试
- 在IDEA中设置断点
- 一步步执行代码
- 观察变量值的变化
3. 接口测试
- 查看请求和响应数据
- 验证参数是否正确
4. 数据库查询
- 直接查询数据库
- 验证数据是否正确
- 检查SQL语句是否有问题
四、个人学习收获
4.1 技术能力提升
1. Spring Boot框架
- 深入理解了Spring Boot的自动配置原理
- 熟练掌握了Controller、Service、Mapper分层开发
- 学会了各种注解的使用(@RestController、@RequestMapping等)
2. MyBatis / MyBatis Plus
- 掌握了基本的CRUD操作
- 学会了动态SQL的编写
- 理解了结果映射的原理
3. 数据库设计
- 学会了如何设计表结构
- 理解了主键、外键、索引的概念
- 掌握了基本的SQL优化技巧
4. 接口设计
- 理解了RESTful风格
- 学会了如何设计规范的API
4.2 软技能提升
1. 团队协作能力
- 学会了如何与不同角色的同学配合
- 掌握了沟通表达的技巧
- 理解了团队协作的重要性
2. 项目管理能力
- 学会了制定开发计划
- 掌握了进度跟踪的方法
- 理解了需求变更的处理方式
3. 问题解决能力
- 学会了独立思考和解决问题
- 掌握了搜索和学习的方法
- 培养了耐心和毅力
4.3 心态上的成长
1. 从"我不会"到"我可以学"
刚开始很多东西都不会,心里很慌。后来发现,不会没关系,只要愿意学,总能学会的。技术更新换代很快,学习能力比知识本身更重要。
2. 从"怕出错"到"不怕错"
以前写代码总怕写错,不敢动手。现在明白,出错是正常的,bug是程序员的好朋友。每解决一个bug,就多一分成长。
3. 从"单打独斗"到"团队协作"
以前写代码都是自己一个人写,想怎么写怎么写。现在才发现,团队协作才是常态。好的代码不是写给自己看的,是写给团队看的。
五、不足之处与改进方向
5.1 技术上的不足
1. 前端知识薄弱
- 对前端技术了解不多
- 联调时有时候理解不了前端的问题
- 以后要多学习前端知识,做一个全栈开发者
2. 数据库优化能力不足
- 只会写基本的SQL
- 对索引优化、查询优化了解不深
- 要深入学习数据库原理和优化技巧
3. 缺乏单元测试
- 项目中没有写单元测试
- 都是手动测试,效率低
- 以后要养成写单元测试的习惯
5.2 项目管理上的不足
1. 需求分析不够充分
- 有些需求没有想清楚就开始做
- 导致后期返工
- 以后要在需求阶段多花时间
2. 时间管理不够好
- 前期进度慢,后期赶工
- 质量难以保证
- 以后要合理安排时间,留有余量
六、建议
如果你也即将参加实训,或者正在做类似的项目,我有几点建议:
6.1 技术学习方面
- 打好基础:Java基础、数据库基础一定要扎实
- 多动手实践:光看不练假把式,多写代码才是王道
- 善用搜索引擎:遇到问题先自己搜,培养独立解决问题的能力
- 做好笔记:好记性不如烂笔头,学到的东西要记录下来
6.2 团队协作方面
- 多沟通:有问题及时说,不要憋着
- 负责任:分配给自己的任务要按时完成
- 互相帮助:别人有困难时伸出援手,你也会需要别人的帮助
- 尊重他人:每个人都有自己的想法,学会倾听和包容
6.3 心态方面
- 不要怕犯错:犯错是学习的一部分
- 不要怕问问题:不懂就问,没什么丢人的
- 保持耐心:解决问题需要时间,不要急
- 享受过程:项目做完了会很有成就感的
七、心得体会
这段时间的实训,说长不长,说短不短。从最开始的环境搭建,到中间的业务开发,再到最后的联调测试,一路走来,收获满满。
感谢我的组员们,大家一起努力,才能完成这个项目。特别感谢组长同学的带领,以及前端同学的配合。也感谢数据库同学和架构同学在技术上的帮助。
通过这次实训,我不仅学到了技术,更重要的是学会了如何学习、如何协作、如何解决问题。这些能力,比具体的技术知识更有价值。
路漫漫其修远兮,吾将上下而求索。技术的道路还很长,我会继续努力,不断学习,不断进步。
最后,希望我的这三篇博客能对大家有所帮助。如果有什么问题,欢迎在评论区交流讨论。
–
系列博客:
- 第一篇:【校园报修系统】Spring Boot + MyBatis Plus 项目环境搭建全记录与踩坑总结
- 第二篇:【校园报修系统】后端业务接口开发实战:报修工单与物资管理模块详解
- 第三篇:【校园报修系统】实训项目总结:从0到1的成长之路(本文)