来自某高校的外包??
简单介绍一下
这是一个关于原项目升级的项目,来自于某某985高校的内部系统,内容保密,原项目的技术栈是Struts2+Spring+Hibernate。我们需要将这个项目升级为SpringBoot+MyBatis+Vue+Vite。对,是的,没错,我们需要把这个前后端不分离的项目升级为前后端分离的项目。
升级计划
- 升级SpringBoot版本为2.2.7
- 更换为比较新的MyBatis和Mybatis-Plus
- 最新的Vue和Vite
吐槽一下
源代码到手的时候大概看了一些,说说一些槽点,最多的Controller行数高达 4000+,这是因为大部分业务都在Controller进行实现了,还有超长的if else组合技,DaoImpl里面有一堆sql字符串拼接。渲染的数据也是直接返回了逻辑删除字段。没有一点点脱敏,可能这种设计不需要注意这些问题。渲染的界面也经常卡住,最长的查询可以到45秒左右。很多配置项也不进行统一,反正吐槽的点挺多的,感觉像外包综合体。
升级思路
在尽量不修改任何源代码逻辑的情况下,完成后端框架的整体替换。在前端方面下,基于最新的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+sssession双认证
- 引入原项目其他的controller层,原来大部分都是modelmap和@ModelAttribute,之后都是改为Restful风格,统一响应体封装类返回
- 在尽量不修改源代码逻辑的情况下,细调逻辑,对所有逻辑的HttpServletRequest传参改为@RequestBody ,对取参采用HttpServletRequest的getAttribute()方法取值,采用自定义的Bean拷贝协调新实体类和旧实体类的转化,协调可能出错的逻辑和sql语句。
- 引入knife4j,实现接口文档,测试和对接,修复错误。>>目前的进度在这里
- 优化
虽然可能大家看上去步骤很清晰,没有什么难度,大部分都是CV,但是对于我这种水平的人还是挺折磨的,虽然有些重复性工作让AI改了,但是AI会偷懒,然后我还要去改AI的错误,明明强调不允许修改原代码逻辑,但是它还是会去修改。大家使用AI的时候,它改的代码最好还是一步步检查.
