Spring缓存:有条件地更新缓存 - 否则返回缓存值

时间:2018-02-06 21:43:25

标签: spring caching spring-data

想象一下简单的方法

 public Data getData(int id);

@Scheduled个任务定期调用getData()。我希望缓存永远不会为任务提供服务,但始终将返回的数据放入缓存中。然后还有一群getData()的其他消费者。我总是希望它们由缓存提供服务,除非它碰巧没有保存所请求的数据。

我怎么能用Spring做到这一点?

1 个答案:

答案 0 :(得分:0)

嗯,一个简单的解决方案可能是为你的getData(int id)方法提供包装器方法,它允许你有一个版本,它总是从缓存调用,另一个会更新它

@CachePut(value="data")
getDataWithoutCache(int id) {
  return getData(id);
}

@Cachable(value="data")
getDataWithCache(int id) {
  return getData(id)
}