我注意到一些源代码中有几行 @CacheEvict("Settings") 并且很好奇是否与 CacheEvict(value = "Settings" , allEntries = true ) 做同样的事情?
2 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
九州编程
TA贡献1785条经验 获得超4个赞
当@CacheEvict不带key属性指定时,所有方法参数都用于构造要被驱逐的条目的键,所以
@CacheEvict("Settings")
public String doThing(String foo, Integer bar) {
// ...
}
... 将使用复合键 { foo, bar} 逐出条目。用于构造复合键的默认键生成器是SimpleKeyGenerator,它返回SimpleKey包含对方法参数的引用的实例以进行比较。
如果方法没有参数,则默认键为SimpleKey.EMPTY.
如果您确实指定了属性,则allEntries无法设置该属性;它们是相互排斥的。如果将其设置为缓存中的所有条目,则每次调用带注释的方法时都将被删除。truekeytrue
所以...
@CacheEvict("Settings", allEntries = true)
public String doThing(String foo, Integer bar) {
// ...
}
Settings...每次调用方法时都会清空缓存,无论方法参数如何。
添加回答
举报
0/150
提交
取消