[英]Spring Cache - real diff between @CachePut and @CacheEvict
[英]Spring cache @CacheEvict matches key in a list?
我正在使用Spring緩存,並嘗試通過key(id)列表退出緩存。
@CacheEvict(value="cacheName",key=?, condition=? )
public void deleteByIds(List<Integer> ids){...}
我該怎么做呢?
@CacheEvict
指示方法(或類中的所有方法)觸發緩存逐出操作的注釋。
存儲方法調用結果的緩存的名稱。
用於使方法緩存成為條件的表達式。
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.