Files
loan-pricing/doc/implementation-report-2026-04-14-ruoyi-vue-springboot2-migration.md

3.8 KiB
Raw Blame History

RuoYi-Vue springboot2 基线迁移实施记录

本次完成内容

  • RuoYi-Vue/springboot2 为基线覆盖当前仓库的框架层:
    • pom.xml
    • ruoyi-admin
    • ruoyi-common
    • ruoyi-framework
    • ruoyi-generator
    • ruoyi-quartz
    • ruoyi-system
    • ruoyi-ui
    • sql 基础脚本
  • 恢复并接回业务模块与业务页面:
    • ruoyi-loan-pricing
    • ruoyi-ui/src/views/loanPricing
    • ruoyi-ui/src/api/loanPricing
    • ruoyi-ui/src/router/index.js 中的业务路由
    • ruoyi-admin 中的业务配置
  • ruoyi-loan-pricing 从 Boot 3 / Java 17 写法回退到 Boot 2 / Java 8 可编译形态:
    • 移除 springdoc 注解和依赖
    • jakarta.* 改回 javax.*
    • String.repeat 改为 Java 8 兼容实现
    • 将模型调用改为模块内 RestTemplate + form-urlencoded
  • 补回当前项目的“无 Redis”本地缓存实现
    • InMemoryCacheEntry
    • InMemoryCacheStats
    • InMemoryCacheStore
    • 本地缓存版 RedisCache
    • 本地缓存版 CacheController
  • 调整前端业务依赖与脚本:
    • 恢复 crypto-js
    • 恢复 splitpanes
    • 恢复 ruoyi-ui/tests 下 4 个业务测试脚本
  • 恢复项目原有部署辅助脚本:
    • bin/prod/*.sh
    • bin/restart_java_backend*.sh
  • 修正本地启动所需配置:
    • logback.xml 日志目录改为项目内 logs
    • application.yml 补齐 swaggerredismybatis
    • 增加 ruoyi-loan-pricing 模块挂载和依赖声明

验证结果

后端编译验证

已通过:

  • export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home && export PATH="$JAVA_HOME/bin:$PATH" && mvn -pl ruoyi-admin -am -DskipTests package
  • export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home && export PATH="$JAVA_HOME/bin:$PATH" && mvn -pl ruoyi-admin -am install -DskipTests

前端构建验证

已通过:

  • source ~/.nvm/nvm.sh && nvm use 14.21.3 && npm install
  • source ~/.nvm/nvm.sh && nvm use 14.21.3 && npm run build:prod

前后端联调验证

已验证:

  • 前端开发服务成功启动于 http://localhost:1024
  • 浏览器打开 http://localhost:1024/login,页面标题显示为“若依管理系统”
  • 浏览器点击登录后成功进入 /index
  • 页面已实际渲染“流程列表”业务页面
  • 通过前端代理访问 http://localhost:1024/dev-api/captchaImage 返回:
    • {"msg":"操作成功","code":200,"captchaEnabled":false}
  • 源码态后端在 Java 8 + spring-boot:run 模式下可启动成功
  • 登录接口可成功返回 token
    • POST /login

联调中发现的遗留问题

浏览器进入系统后,页面出现两条后端错误提示:

  1. 数据库缺少 sys_notice_read
  2. GET /loanPricing/workflow/list 仍返回 TooManyResultsException

其中第 1 项已确认当前仓库 SQL 中已有对应建表语句:

  • sql/ry_20260330.sql
  • sql/loan_pricing_prod_init_20260331.sql

说明当前代码迁移已落地,但联调数据库尚未完全补齐到 springboot2 基线所需表结构。

第 2 项已经定位到当前运行态仍存在列表查询返回值与 MyBatis 映射结果不一致的问题,表现为:

  • GET /loanPricing/workflow/list?pageNum=1&pageSize=10
  • 返回:{"msg":"nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 15","code":500}

结论

本次代码迁移已经完成:

  • 框架层已切回 RuoYi-Vue springboot2
  • 业务模块和业务页面已接回
  • Java 8 / Spring Boot 2 / Vue 2 的编译与构建链路已打通
  • 浏览器已成功进入业务页面与登录链路

当前剩余问题集中在:

  • 联调数据库尚未补齐 sys_notice_read
  • workflow/list 运行态查询仍需继续收口