使用SpringCache失效问题
使用SpringCache失效问题
代码关系:
情景描述:
我需要调用在当前的queryPage中调用GetIndexPlayList获取IPage对象,再将该对象封装成为一个PageUtils对象,可以看到,我是用了@Cacheable注解。
运行结果:
这是调用接口执行之后的结果,可以看到@Cacheable注解并没又产生作用,查看Redis中也没有我们想要的数据。
解决方式:
通过查阅博客等,发现如果是在本类中调用存在@Cacheable注解的方法(同类方法互调),该注解就会失效,当在本类中调用其他类中存在@Cacheable注解的方法的时候该注解才会生效。
针对我上面的代码,我就可以将这两个方法中的代码合二为一:
@Cacheable(value = "indexPlayList",key = "'indexPlayList'")
@Override
public PageUtils queryPage(Map<String, Object> params) {
IPage<PlaylistEntity> page = this.page(
new Query<PlaylistEntity>().getPage(params),
new QueryWrapper<PlaylistEntity>()
);
//将PlayList对象转化为PlayListVo对象
page.convert(item-> new PlayListVo(item.getId(),item.getName(),item.getDescription(),item.getCover()));
return new PageUtils(page);
}
我为什么不一开始就将这代码写成这样:
🤣🤣🤣🤣🤣因为我一开始这样写的时候是总会出现下面图片中的错误,我看了看错误是缺少了构造方法,所以我添加了一个全参数构造,结果还是不行,最后就想着将两个方法拆分,就出现这个问题了😂😂😂,最后我也解决了这个问题,只需要添加一个无参数构造就行了。。。