今天根据要求,对项目进行了改动,要求把Apache POI的excel表格导出替换成阿里的EasyExcel。改动完成对项目进行系统功能测试,测试表格导出功能正常,本以为任务就这样完成了,但是在用户模块测试的时候,发现套餐列表不跳转,后端报错:Cannot find cache named 'setmeal' for Builder…… 找不到 Builder 的名为“setmeal”的缓存
以为sql语句被误改动,检查后发现不是sql的问题;根据报错信息,确定是缓存的问题,后台确认Redis缓存已启动,其他功能正常,排除缓存自身问题。百思不得其解,明明之前还是正常的,为什么就改动了一下excel导出就不行了呢?查阅资料后终于明白了 错误原因:Spring缓存与EasyExcel发生冲突
Spring版本为2.7.3、EasyExcel版本为2.2.6;资料中给出了两种解决方案
第一种方案:
保持EasyExcel版本不变,降低Spring版本为2.7.0以下(此方法本人未进行尝试,感兴趣的小伙伴可以试一下)
第二种方案:
Spring和EasyExcel版本都不动,修改yml配置文件
在配置文件中添加如下配置,选择缓存:
spring:
cache:
type: redis
添加配置后再次启动测试,项目功能已经恢复正常。