最近在项目中一直用到@Cacheable和@CacheEvict这两个注解来加缓存和清除缓存,但有时候会出现在同一个事务中先是清楚了缓存,但是有不在这个事务中的方法调用了查询,又把更新前的数据重新放到缓存里面了,所以就想好好的去研究一下@CacheEvict这个缓存删除的注解
1.value
必须属性,用于指定该方法清除哪个缓存区的数据,默认是一个空的数组
2. allEntries
这个属性是指是否清楚整个缓存区
3.beforeInvocation
这个属性比较关键,他的意思是是否在执行对应方法之前删除缓存,默认 false(即执行方法之后再删除缓存),当我们遇到需要在执行方法前删除缓存,也就是不管方法执行是否成功都需要清除缓存,那我们就可以把beforeInvocation的值改为true
4.condition
这个属性是指定一个SpEL表达式,只有当该表达式为true时才会清除缓存
5.key
通过SpEL表达式显示指定缓存的key
eg: key = "#warehousePo.guid + ‘all’"
6.cacheNames
cache名称集合,数据结构为数组类型文章来源:https://www.toymoban.com/news/detail-409023.html
笔者用到的比较多的就是beforeInvocation的使用,因为根据不同的业务逻辑,会出现缓存删除的场景不同,需要慎重考虑设置为true还是false,文章比较浅,可以大致理解一下各个参数的含义。文章来源地址https://www.toymoban.com/news/detail-409023.html
到了这里,关于@CacheEvict注解参数详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!