模块
当前技术
升级后技术
状态
Spring Boot
2.2.7.RELEASE
3.x (Jakarta EE)
✅ 已升级
Java
JDK 1.8
JDK 17+
✅ 已升级
容器
Undertow
Tomcat (默认)
✅ 已还原
ORM
MyBatis-Plus 3.3.1
MyBatis (原生XML)
✅ 已迁移
数据库连接池
Druid 1.1.22
HikariCP (默认)
✅ 已替换
缓存
EhCache + JCache
Caffeine
✅ 已替换
安全框架
Spring Security + JWT
Spring Security + Session
✅ 已重构
密码存储
明文比对
BCrypt Hash
✅ 已实现
数据库引擎
MyISAM
InnoDB
✅ 已迁移
逻辑删除
物理删除
deleted字段软删除
✅ 已实现
模板引擎
FreeMarker
FreeMarker
保持
前端UI
Layui + Bootstrap3
Bootstrap5 + jQuery3
🔄 规划中
JSON
FastJSON
Jackson
✅ 已替换
工具库
Hutool + commons-lang3
Apache Commons
✅ 已统一
验证码
Hutool CaptchaUtil
Kaptcha
✅ 已替换
文件上传
自定义StorageService
自定义StorageService
保持
com.softdev.cms
├── config/ # 配置类
│ ├── WebSecurityConfig # Spring Security + Session配置 ✅
│ ├── CacheConfig # Caffeine缓存配置 ✅
│ ├── KaptchaConfig # 验证码配置 ✅
│ ├── WebMvcConfig # MVC配置
│ ├── ServerConfig # 服务器配置
│ └── GlobalDefaultExceptionHandler # 全局异常处理
├── controller/ # 控制器(18个)
│ ├── BackEndController # 后台登录/验证码/登出 ✅
│ ├── FrontEndController # 前台页面+接口
│ ├── ArticleController # 文章CRUD ✅ (含view_count递增)
│ ├── ChannelController # 频道CRUD ✅
│ ├── MenuController # 菜单CRUD+初始化
│ ├── ActivityController # 活动CRUD ✅
│ ├── ActivitySignController # 活动签到 ✅
│ ├── FormController # 表单CRUD ✅
│ ├── FormItemController # 表单项CRUD ✅
│ ├── FormSubmitController # 表单提交 ✅
│ ├── FormSubmitValueController # 表单提交值 ✅
│ ├── FileController # 文件上传/下载
│ ├── TemplateController # 模板CRUD ✅
│ ├── UserController # 用户CRUD ✅ (BCrypt密码)
│ ├── MediaController # 媒体资源管理 ✅ 新增
│ ├── AuditLogController # 操作日志查询 ✅ 新增
│ ├── SiteConfigController # 站点配置管理 ✅ 新增
│ ├── TagController # 标签管理 ✅ 新增
│ └── IndexController # 首页
├── entity/ # 实体类(16个 + DTO/异常子包)
│ ├── Article ✅ (新增slug/coverImage/viewCount/publishTime/deleted)
│ ├── Channel ✅ (新增slug/coverImage/description/channelType/deleted)
│ ├── Menu ✅ (新增deleted)
│ ├── User ✅ (新增email/companyName/companyAddress/openId/deleted)
│ ├── Activity ✅ (新增deleted)
│ ├── ActivitySign ✅ (新增deleted)
│ ├── Form ✅ (新增deleted)
│ ├── FormItem ✅ (新增placeholder/deleted)
│ ├── FormSubmit ✅ (新增auditUserId/auditUserName/auditTime/deleted)
│ ├── FormSubmitValue ✅ (新增deleted)
│ ├── Template ✅ (新增deleted)
│ ├── Media ✅ 新增 (媒体资源管理)
│ ├── AuditLog ✅ 新增 (操作日志)
│ ├── SiteConfig ✅ 新增 (站点全局配置)
│ ├── Tag ✅ 新增 (标签)
│ ├── ArticleTag ✅ 新增 (文章-标签关联)
│ ├── dto/ (QueryParamDTO, FormSubmitValueDTO, FormSubmitValueExcelDTO)
│ └── exception/ (StorageException, StorageFileNotFoundException)
├── mapper/ # Mapper接口(16个,原生MyBatis XML)✅
│ ├── ArticleMapper ✅ (含selectBySlug/incrementViewCount)
│ ├── ChannelMapper ✅ (含selectBySlug/selectByParentChannelId)
│ ├── UserMapper ✅ (含逻辑删除)
│ ├── MenuMapper ✅
│ ├── ActivityMapper ✅
│ ├── ActivitySignMapper ✅
│ ├── FormMapper ✅
│ ├── FormItemMapper ✅
│ ├── FormSubmitMapper ✅
│ ├── FormSubmitValueMapper ✅
│ ├── TemplateMapper ✅
│ ├── MediaMapper ✅ 新增
│ ├── AuditLogMapper ✅ 新增
│ ├── SiteConfigMapper ✅ 新增
│ ├── TagMapper ✅ 新增
│ └── ArticleTagMapper ✅ 新增
├── service/ # 服务类
│ ├── CmsUserDetailsService # Spring Security用户详情 ✅
│ ├── FrontEndService # 前台服务(含缓存)
│ └── StorageService/Impl # 文件存储服务
└── util/ # 工具类
├── Result # 统一返回体 ✅
└── AuditLogHelper # 审计日志辅助 ✅ 新增
JWT认证混乱 ✅ 已解决:移除JWT,改为Session + Spring Security
安全漏洞 ✅ 已解决:BCrypt密码、SQL参数化、Session认证
UI过时 🔄:后台使用Layui(已停止维护),前台Bootstrap3;编辑器使用LayEdit(功能简陋)
依赖老旧 ✅ 已解决:Spring Boot 3.x、MyBatis原生、Jackson、Caffeine
缓存配置不一致 ✅ 已解决:统一使用Caffeine + Spring Cache注解
数据库引擎MyISAM ✅ 已解决:全部迁移InnoDB
物理删除 ✅ 已解决:全部改为deleted逻辑删除
缺少审计/配置/标签/媒体管理 ✅ 已解决:新增4张表+对应代码
将SpringBootCMS升级为一个基于现代技术栈的、安全可靠的CMS系统,具备现代企业级UI体验、完善的权限管理、高效的缓存策略。
安全优先 :消除所有已知安全漏洞,建立完善的权限体系
渐进式改造 :按模块分阶段推进,每个阶段可独立验证
最小化依赖 :移除冗余依赖,统一技术选型
前后端分离友好 :后端API设计RESTful化,为未来前后端分离预留空间
3.3 移除Hutool,统一使用Apache Commons ✅
表名
说明
状态
media
文件/图片资源管理表
✅ 已创建
audit_log
操作日志表
✅ 已创建
site_config
站点全局配置表
✅ 已创建
tag
标签表
✅ 已创建
article_tag
文章-标签关联表
✅ 已创建
role
角色表
✅ 已创建
对应代码:
Entity: Media, AuditLog, SiteConfig, Tag, ArticleTag, Role ✅
Mapper XML: MediaMapper.xml, AuditLogMapper.xml, SiteConfigMapper.xml, TagMapper.xml, ArticleTagMapper.xml ✅
Mapper Java: MediaMapper, AuditLogMapper, SiteConfigMapper, TagMapper, ArticleTagMapper ✅
Controller: MediaController, AuditLogController, SiteConfigController, TagController ✅
缓存策略:
缓存名
TTL
最大容量
说明
cache-page
30min
100
页面模板缓存
cache-article
15min
500
文章内容缓存
cache-channel
60min
50
频道列表缓存
cache-activity
10min
100
活动列表缓存
cache-form
10min
100
表单缓存
3.16 后台管理UI改版(Layui → Bootstrap5 + jQuery3)
3.18 前台UI改版(Bootstrap3 → Bootstrap5)
表名
说明
引擎
逻辑删除
审计字段
user
用户表
InnoDB
✅ deleted
✅
role
角色表
InnoDB
✅ deleted
✅
menu
菜单表
InnoDB
✅ deleted
✅
channel
频道/栏目表
InnoDB
✅ deleted
✅
article
文章表
InnoDB
✅ deleted
✅
tag
标签表
InnoDB
✅ deleted
✅
article_tag
文章-标签关联表
InnoDB
-
✅ create_time
template
模板配置表
InnoDB
✅ deleted
✅
activity
活动表
InnoDB
✅ deleted
✅
activity_sign
活动签到表
InnoDB
✅ deleted
✅
form
表单模板表
InnoDB
✅ deleted
✅
form_item
表单字段表
InnoDB
✅ deleted
✅
form_submit
表单提交表
InnoDB
✅ deleted
✅
form_submit_value
表单提交值表
InnoDB
✅ deleted
✅
media
媒体资源表
InnoDB
✅ deleted
✅
audit_log
操作日志表
InnoDB
- (只增不删)
✅ create_time
site_config
站点全局配置表
InnoDB
✅ deleted
✅
user ──1:N── article (create_user_id)
user ──1:N── activity (create_user_id)
user ──1:N── activity_sign (user_id)
user ──1:N── form_submit (user_id)
user ──1:N── media (upload_user_id)
user ──1:N── audit_log (user_id)
channel ──1:N── article (channel_id)
channel ──1:N── channel (parent_channel_id, 自关联)
article ──M:N── tag (通过 article_tag 关联表)
form ──1:N── form_item (form_id)
form ──1:N── form_submit (form_id)
form_item ──1:N── form_submit_value (item_id)
form_submit ──1:N── form_submit_value (submit_id)
role ──1:N── user (role_id)
role ──1:N── menu (role_id, 逗号分隔)
依赖
原因
spring-boot-starter-undertow
恢复默认Tomcat
druid-spring-boot-starter
恢复默认HikariCP
hutool-all
统一使用Apache Commons
mybatis-plus-boot-starter
改用原生MyBatis
fastjson
改用Jackson
jjwt
JWT改Session
javax.cache:cache-api
改用Caffeine
org.ehcache:ehcache
改用Caffeine
springloaded
已废弃
依赖
用途
mybatis-spring-boot-starter 3.x
原生MyBatis
caffeine
高性能缓存
commons-text
Apache字符串工具
kaptcha
验证码生成
spring-boot-starter-validation
参数校验
依赖
说明
spring-boot-starter-web
含默认Tomcat
spring-boot-starter-security
安全框架
spring-boot-starter-freemarker
模板引擎
spring-boot-starter-cache
缓存抽象
spring-boot-devtools
开发热部署
lombok
代码简化
mysql-connector-j
MySQL驱动
poi-ooxml
Excel导入导出
commons-lang3
Apache工具
阶段一(基础框架)✅ → 阶段二(安全认证)✅ → 阶段三(ORM重构)✅ → 阶段四(数据库优化)✅ → 阶段五(缓存)✅ → 阶段六(UI)🔄 → 阶段七(优化)🔄
阶段
内容
优先级
状态
阶段一
Spring Boot 3 + 依赖清理
P0
✅ 已完成
阶段二
JWT→Session + 安全加固
P0
✅ 已完成
阶段三
MyBatis-Plus→MyBatis
P0
✅ 已完成
阶段四
数据库结构优化
P0
✅ 已完成
阶段五
EhCache→Caffeine缓存
P1
✅ 已完成
阶段六
UI改版 Bootstrap5
P1
🔄 规划中
阶段七
通用优化
P2
🔄 部分完成
Spring Boot 3 升级 ✅ 已完成:javax→jakarta迁移已完成
MyBatis-Plus→MyBatis ✅ 已完成:所有Mapper已重写
富文本编辑器 🔄:LayEdit内容格式可能与新编辑器不兼容,需提供内容迁移方案
数据迁移 :旧数据库需要执行 sql/ddl/schema.sql 重建,旧数据需编写迁移脚本
前端模板 🔄:所有 templates/cms/*.html 需要从Layui迁移到Bootstrap5
UI改版 :后台管理界面 Bootstrap5 化
审计日志集成 :在Controller操作中调用AuditLogHelper
文件上传优化 :上传自动记录media表、从site_config读取限制
API规范化 :统一路径前缀、RESTful风格
前端模板 :前台页面 Bootstrap5 化