一箫一剑平生意,负尽狂名十五年。这篇文章主要讲述SpringCache#yyds干货盘点#相关的知识,希望能为你提供帮助。
概述【SpringCache#yyds干货盘点#】SpringCache本身是一个缓存体系的抽象实现,但它本身并没有具体的缓存能力,要使用SpringCache还需要配合具体的缓存实现来完成。
虽然如此,但是SpringCache是所有Spring支持的缓存结构的基础,而且所有的缓存的使用最后都要归结于SpringCache。
缓存注解SpringCache缓存功能的实现是依靠下面的这几个注解完成的:
- @EnableCaching:开启缓存功能
- @Cacheable:定义缓存,用于触发缓存
- @CachePut:定义更新缓存,触发缓存更新
- @CacheEvict:定义清除缓存,触发缓存清除
- @Caching:组合定义多种缓存功能
- @CacheConfig:定义公共设置,位于class之上
参数 | 作用 |
---|---|
value | 缓存的名称 |
cacheNames | 数组,通过数组的方式可以指定多个缓存 |
key | 缓存的 key, 用来指定对应的缓存,默认使用方法参数值作为key的值。也可以使用SpEL表达式的值来指定 |
condition | 缓存的条件,可以通过SpEL表达式进行设置 |
keyGenerator | 用来自定义key的生成策略 |
cacheManager | 指定缓存管理器 |
unless(除非) | 当这个条件为true的时候,方法的返回值就不会被缓存 |
sync | 是否异步,当其值为true的时候,unless属性不能使用 |
- key所支持的SpEL表达式:
文章图片
文章图片
- keyGenerator:key的生成器
绝大多数情况下建议使用keyGenerator,编译过程中可能会解析不到参数名,导致缓存时key拼接错误。@Component public class RedisDeptConfig /** * 缓存键自动生成器 * * @return */ @Bean(name = "deptKeyGen") public KeyGenerator keyGenerator()//设置自定义keyClassName + methodName + params return (target, method, params) -> String funName = method.getName(); StringBuilder sb = new StringBuilder(); sb.append(target.getClass().getName()); sb.append("."); sb.append(funName); sb.append("("); for (int i = 0; i < params.length; i++) sb.append(params[i].toString()); if (i != (params.length - 1)) sb.append(","); sb.append(")"); return sb.toString(); ;
在使用的时候,可以通过一下的方式进行配置
@Cacheable(keyGenerator = "deptKeyGen")
public Dept findDeptByDeptno(Integer deptno)
return baseMapper.selectById(deptno);
推荐阅读
- K8SNamespace命名空间
- #星光计划2.0#HarmonyOS分布式应用农业大棚数据监测解读
- AWS eks绑定alb 使用aws-load-balancer-controller(Ingress Controller)提供服务
- #yyds干货盘点# JavaScript之手撕callapply
- 小程序下一破局点(钉钉小程序卡片,应用与平台的深度集成)
- Wo??rdpress如果当前用户是
- WordPress(我在本地主机上自定义了一个模板,但是我想购买相同的高级模板)
- WordPress(如何在定制程序中使用活动回调)
- WordPress-如何为自定义生成的内容调用默认页面模板()