我注意到一些源代碼中有幾行 @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
提交
取消