@CacheEvict注解参数详解
最近在项⽬中⼀直⽤到@Cacheable和@CacheEvict这两个注解来加缓存和清除缓存,但有时候会出现在同⼀个事务中先是清楚了缓存,但是有不在这个事务中的⽅法调⽤了查询,⼜把更新前的数据重新放到缓存⾥⾯了,所以就想好好的去研究⼀下@CacheEvict这个缓存删除的注解
1.value
必须属性,⽤于指定该⽅法清除哪个缓存区的数据,默认是⼀个空的数组
2. allEntries
这个属性是指是否清楚整个缓存区
3.beforeInvocation
这个属性⽐较关键,他的意思是是否在执⾏对应⽅法之前删除缓存,默认 false(即执⾏⽅法之后再删除缓存),当我们遇到需要在执⾏⽅法前删除缓存,也就是不管⽅法执⾏是否成功都需要清除缓存,那我们就可以把beforeInvocation的值改为truecacheable
这个属性是指定⼀个SpEL表达式,只有当该表达式为true时才会清除缓存
5.key
通过SpEL表达式显⽰指定缓存的key
eg: key = "#warehousePo.guid + ‘all’"
6.cacheNames
cache名称集合,数据结构为数组类型
笔者⽤到的⽐较多的就是beforeInvocation的使⽤,因为根据不同的业务逻辑,会出现缓存删除的场景不同,需要慎重考虑设置为true还是false,⽂章⽐较浅,可以⼤致理解⼀下各个参数的含义。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论