来自某高校的外包??

Shi Yi2025/07/11dailyjavaspringboot

简单介绍一下

这是一个关于原项目升级的项目,来自于某某985高校的内部系统,内容保密,原项目的技术栈是Struts2+Spring+Hibernate。我们需要将这个项目升级为SpringBoot+MyBatis+Vue+Vite。对,是的,没错,我们需要把这个前后端不分离的项目升级为前后端分离的项目。

升级计划

  1. 升级SpringBoot版本为2.2.7
  2. 更换为比较新的MyBatis和Mybatis-Plus
  3. 最新的Vue和Vite

吐槽一下

源代码到手的时候大概看了一些,说说一些槽点,最多的Controller行数高达 4000+,这是因为大部分业务都在Controller进行实现了,还有超长的if else组合技,DaoImpl里面有一堆sql字符串拼接。渲染的数据也是直接返回了逻辑删除字段。没有一点点脱敏,可能这种设计不需要注意这些问题。渲染的界面也经常卡住,最长的查询可以到45秒左右。很多配置项也不进行统一,反正吐槽的点挺多的,感觉像外包综合体

升级思路

尽量不修改任何源代码逻辑的情况下,完成后端框架的整体替换。在前端方面下,基于最新的Vue和Vite重新开发。

升级步骤

  1. 在github上找了一个Springboot 2.2.7的简易脚手架,修改配置文件,运行
  2. 将原项目除了xml文件和controller的文件都复制过来
  3. 之前是xml注册bean的,现在用注解重新注册bean
  4. 修改DaoImpl层和Mapper层,myabtisX生成新的映射文件
  5. 复杂的sql采用xml编写sql语句,简单sql采用MybatisPlus编写
  6. 补全缺少的依赖,之前是手动引入jar包,现在是maven管理依赖,保证项目能够正常启动
  7. 引入原项目的登录controller层,并且改为Restful风格,统一响应体封装类返回
  8. 重构Shiro安全框架,之前Shiro的配置是xml写的,现在改为配置类的形式,而且之前不符合前后端设计,这里需要大部分重构,采用token+sssession双认证
  9. 引入原项目其他的controller层,原来大部分都是modelmap和@ModelAttribute,之后都是改为Restful风格,统一响应体封装类返回
  10. 在尽量不修改源代码逻辑的情况下,细调逻辑,对所有逻辑的HttpServletRequest传参改为@RequestBody ,对取参采用HttpServletRequest的getAttribute()方法取值,采用自定义的Bean拷贝协调新实体类和旧实体类的转化,协调可能出错的逻辑和sql语句。
  11. 引入knife4j,实现接口文档,测试和对接,修复错误。>>目前的进度在这里
  12. 优化

虽然可能大家看上去步骤很清晰,没有什么难度,大部分都是CV,但是对于我这种水平的人还是挺折磨的,虽然有些重复性工作让AI改了,但是AI会偷懒,然后我还要去改AI的错误,明明强调不允许修改原代码逻辑,但是它还是会去修改。大家使用AI的时候,它改的代码最好还是一步步检查.

Last Updated 9/4/2025, 2:28:31 PM