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

时间:2018-11-14 04:04:53

标签: java spring spring-cache

我正在使用Spring缓存,并试图通过键(id)的列表退出缓存。

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

我该如何做到呢?

1 个答案:

答案 0 :(得分:1)

  • @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
}