本文将详细解释@ CacheEvict中的allEntries和beforeInvocation之间的区别。文章内容质量较高,边肖将分享给大家参考。希望你看完这篇文章后有所了解。
00-1010在spring cache中,@ CacheEvict是一个清除缓存的注释。
注释参数只能是值,key表示清除值空间中的键值数据。此时,默认情况下,当前注释方法成功执行后,它将被清除。
这个时候,就会出现问题。也许您的注释方法成功地执行了删除操作,但是后续代码抛出了一个异常,并且未能清除缓存,因此在下一次查询中仍然会从缓存中读取它。此时,查询结果值是删除操作之前的值。
有一个简单的解决方案,将beforeInvocation添加到注释参数中是真的,这意味着在执行此方法之前,缓存将被清除,因此无论此方法是否成功执行,缓存都不会存在。
当注释参数加上allEntries为真时,这意味着该缓存清除意味着清除当前值空间中的所有缓存数据。
00-1010最近,在项目中使用了@Cacheable和@ CacheEvict这两个注释来添加和清除缓存,但有时它们会出现在同一个事务中。首先,缓存是干净的,但是有一个方法不在这个事务中,它调用查询并将更新前的数据放回缓存中,所以我想好好研究一下从缓存中删除的注释@ CacheEvict。
@CacheEvict allEntries与beforeInvocation区别
必需属性,用于指定该方法清除哪个缓冲区数据。默认情况下,它是一个空数组。
00-1010这个属性是指整个缓冲区是否清晰。
00-1010为键属性,表示在执行相应方法之前是否删除缓存,默认值为false(即执行方法后删除缓存)。当我们在执行方法之前遇到删除缓存的需求时,也就是说,无论方法是否成功,我们都需要清除缓存,然后我们可以将before invoke的值更改为true。
00-1010此属性指定一个SpEL表达式,只有当表达式为真时,缓存才会被清除。
00-1010通过SpEL表达式显示指定缓存的密钥。
例如:key='#warehousePo.guid 'all ' '
@CacheEvict注解参数详解
缓存名称集合,数据结构为数组类型。
我用的比较多的是beforeInvocation的用法,因为根据不同的业务逻辑,会有不同的缓存删除场景,所以需要仔细考虑是设置为true还是false。文章比较浅,所以可以大致了解每个参数的含义。
@ CacheEvict中的allEntries和beforeInvocation有什么区别?我在这里分享一下。我希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157915.html