我正在使用Spring缓存,并试图通过键(id)的列表退出缓存。
@CacheEvict(value="cacheName",key=?, condition=? )
public void deleteByIds(List<Integer> ids){...}
我该如何做到呢?
答案 0 :(得分:1)
@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
}