不想听废话的:看是不是因为你redis
存储的数据类型和你要返回的类型不一致,造成了类型转换异常
在项目中,一些频繁的查询操作更好的解决方案是利用redis缓存而不是每次都操作数据库查询,这样会造成大量的不必要的性能浪费。
我们可以利用Spring框架给我们提供的@Cacheable
注解来进行和redis
的搭配从而解决这样的问题。
因为本篇文章不是讲解@Cacheable
的使用,如果有想了解的朋友,可以看SpringBoot 缓存之 @Cacheable 详细介绍这篇文章,我觉得作者写的还挺详细。
那么开始进入主题,我出现的问题是控制台报出类型转换异常,Result
类型(我自己封装的)无法转换为List
类型,刚开始我还以为是项目缓存问题,但是重构了两次项目发现没有作用,就准备利用debug调试,但是发现加了@Cacheable
的方法根本不会调用,直接抛出类型转换异常,
然后我才想起来在我推荐的这篇文章中,作者是这样写到的Spring Cache 是作用在方法上的,其核心思想是,当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存在缓存中。
这时我就想到原来我的@Cacheable
是加在controller层中的,后来迁移到了service层,返回类型不一致但没有变更cacheNames
,所以造成了类型转换异常。