我注意到一些源代码中有几行 @CacheEvict("Settings") 并且很好奇是否与 CacheEvict(value = "Settings" , allEntries = true ) 做同样的事情?
问问题
1057 次
2 回答
2
当@CacheEvict
不带key
属性指定时,所有方法参数都用于构造要被驱逐的条目的键,所以
@CacheEvict("Settings")
public String doThing(String foo, Integer bar) {
// ...
}
... 将使用复合键 { foo
, bar
} 逐出条目。用于构造复合键的默认键生成器是SimpleKeyGenerator
,它返回SimpleKey
包含对方法参数的引用的实例以进行比较。
如果方法没有参数,则默认键为SimpleKey.EMPTY
.
如果您确实指定了属性,则allEntries
无法设置该属性;它们是相互排斥的。如果将其设置为缓存中的所有条目,则每次调用带注释的方法时都将被删除。true
key
true
所以...
@CacheEvict("Settings", allEntries = true)
public String doThing(String foo, Integer bar) {
// ...
}
Settings
...每次调用方法时都会清空缓存,无论方法参数如何。
于 2019-02-27T21:59:26.503 回答