簡體   English   中英

Spring cache @CacheEvict匹配列表中的鍵?

[英]Spring cache @CacheEvict matches key in a list?

我正在使用Spring緩存,並嘗試通過key(id)列表退出緩存。

@CacheEvict(value="cacheName",key=?, condition=? )
public void deleteByIds(List<Integer> ids){...}

我該怎么做呢?

  • @CacheEvict

指示方法(或類中的所有方法)觸發緩存逐出操作的注釋。

  • cachaName或值

存儲方法調用結果的緩存的名稱。

  • 條件

用於使方法緩存成為條件的表達式。

root.method,root.target和root.caches分別用於引用方法,目標對象和受影響的緩存。

針對您的問題的解決方案 :假設將列表中的每個對象都緩存到其中,例如cacheName =“ entities”,並且對於鍵,您可以使用實體ID(這是Integer值的String表示形式),您應該編寫第二個退出緩存的方法。

public void deleteByIds(List<Intiger> intigers){
 for(Intigier i : intigers){
  deleteEntity(i.toString());
 }
}

@CacheEvict(cacheName = "entities", key="entityId", condition="entityId!=null")
private void deleteEntity(String entityId){
 //processing : for ex delete from the database and also remove from cache
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM