来自某高校的外包??
📌 简单介绍一下
这是一个关于原项目升级的项目,来自于某某 985 高校的内部系统,内容保密。
WARNING
原项目的技术栈是 Struts2+Spring+Hibernate。我们需要将这个项目升级为 SpringBoot+MyBatis+Vue+Vite。对,是的,没错,我们需要把这个 前后端不分离的项目 升级为 前后端分离 的项目。
🎯 升级计划
- 升级 SpringBoot 版本为 2.2.7
- 更换为比较新的 MyBatis 和 Mybatis-Plus
- 最新的 Vue 和 Vite
🤬 吐槽一下
源代码到手的时候大概看了一些,说说一些槽点:
- 最多的 Controller 行数高达
4000+,这是因为大部分业务都在 Controller 进行实现了 - 还有超长的
if else 组合技 - DaoImpl 里面有一堆 sql 字符串拼接
- 渲染的数据也是直接返回了逻辑删除字段,没有一点点脱敏
- 渲染的界面也经常卡住,最长的查询可以到
45 秒左右 - 很多配置项也不进行统一
TIP
反正吐槽的点挺多的,感觉像 外包综合体。
💡 升级思路
在 尽量不修改任何源代码逻辑 的情况下,完成后端框架的整体替换。在前端方面下,基于 最新的 Vue 和 Vite 重新开发。
🛠️ 升级步骤
- 在 github 上找了一个 Springboot 2.2.7 的简易脚手架,修改配置文件,运行
- 将原项目除了 xml 文件和 controller 的文件都复制过来
- 之前是 xml 注册 bean 的,现在用注解重新注册 bean
- 修改 DaoImpl 层和 Mapper 层,myabtisX 生成新的映射文件
- 复杂的 sql 采用 xml 编写 sql 语句,简单 sql 采用
MybatisPlus编写 - 补全缺少的依赖,之前是手动引入 jar 包,现在是 maven 管理依赖,保证项目能够正常启动
- 引入原项目的登录 controller 层,并且改为 Restful 风格,统一响应体封装类返回
- 重构 Shiro 安全框架,之前 Shiro 的配置是 xml 写的,现在改为配置类的形式;而且之前不符合前后端设计,这里需要大部分重构,采用
token+session双认证 - 引入原项目其他的 controller 层,原来大部分都是 modelmap 和
@ModelAttribute,之后都是改为 Restful 风格,统一响应体封装类返回 - 在尽量不修改源代码逻辑的情况下,细调逻辑,对所有逻辑的 HttpServletRequest 传参改为
@RequestBody,对取参采用 HttpServletRequest 的getAttribute()方法取值,采用自定义的 Bean 拷贝协调新实体类和旧实体类的转化,协调可能出错的逻辑和 sql 语句 - 引入
knife4j,实现接口文档,测试和对接,修复错误。>>目前的进度在这里<< - 优化
📝 总结
TIP
虽然可能大家看上去步骤很清晰,没有什么难度,大部分都是 CV,但是对于我这种水平的人还是挺折磨的。虽然有些重复性工作让 AI 改了,但是 AI 会偷懒,然后我还要去改 AI 的错误,明明强调不允许修改原代码逻辑,但是它还是会去修改。
大家使用 AI 的时候,它改的代码最好还是一步步检查。
