202110-29 解决@Cacheable在同一个类中方法调用不起作用的问题 @Cacheable在同一类中方法调用无效上述图片中,同一个类中genLiveBullets()方法调用同类中的queryLiveByRoom()方法,这样即便标识了Cacheable标签,再次调用时也没有走缓存。cacheable不支持内部方法调用的方式,需要修改为把请求缓存的改成service方式,Aservice中的genLiveBullets()调用Bservice中的queryLiveByRoom()见下图,已测试再次调用时为走的缓存。@Cacheable的使用总结@Cacheable(value="PERSON",key="#tagId+'_'+#... 继续阅读 >
202110-12 Spring缓存注解@Cacheable @CacheEvit @CachePut使用介绍 目录I.项目环境1.项目依赖II.缓存注解介绍1.@Cacheable2.@CachePut3.@CacheEvict4.@Caching5.异常时,缓存会怎样?6.测试用例7.小结III.不能错过的源码和相关知识点0.项目Spring在3.1版本,就提供了一条基于注解的缓存策略,实际使用起来还是很丝滑的,本文将针对几个常用的注解进行简单的介绍说明,有需要的小伙伴可以尝试一下本文主要知识点:@Cacheable:缓存存在,则使用缓存;不存在,则执行方法,并将结果塞... 继续阅读 >
202102-21 Spring @Cacheable redis异常不影响正常业务方案 背景项目中,使用@Cacheable进行数据缓存。发现:当redis宕机之后,@Cacheable注解的方法并未进行缓存冲突,而是直接抛出异常。而这样的异常会导致服务不可用。原因分析我们是通过@EnableCaching进行缓存启用的,因此可以先看@EnableCaching的相关注释通过@EnableCaching的类注释可发现,springcache的核心配置接口为:org.springframework.cache.annotation.CachingConfigurer/***Interfacetobeimplementedby@{@linkorg.sp... 继续阅读 >
202102-21 @Cacheable 拼接key的操作 我就废话不多说了,大家还是直接看代码吧~@Cacheable(value="page_user",key="T(String).valueOf(#page).concat('-').concat(#pageSize)",unless="#result=null")//由于page是int型,concat要求变量必须为String,所以强转一下@OverridepublicList<SysUserEntity>page(intpage,intpageSize){returnuserMapper.page(page,pageSize);}补充:记一个spring缓存Cacheable注解key设置问题spring的Cacheable注解用来设置缓存... 继续阅读 >