亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

@CacheEvict(...) 和 @CacheEvict(value , allEntries

@CacheEvict(...) 和 @CacheEvict(value , allEntries

當年話下 2022-07-14 10:23:46
我注意到一些源代碼中有幾行 @CacheEvict("Settings") 并且很好奇是否與 CacheEvict(value = "Settings" , allEntries = true ) 做同樣的事情?
查看完整描述

2 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

只需看看它的Javadoc。您會注意到is
的默認值。所以不,這不是一回事。僅在每次執行操作時都需要新緩存時使用 。allEntriesfalse
allEntries = true

是否刪除緩存內的所有條目。默認情況下,僅刪除關聯鍵下的值。

如果您想查看實現細節,只需查看Coffeine。


查看完整回答
反對 回復 2022-07-14
?
九州編程

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...每次調用方法時都會清空緩存,無論方法參數如何。


查看完整回答
反對 回復 2022-07-14
  • 2 回答
  • 0 關注
  • 265 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號