使用密钥更新缓存中的新数据

Update with new data in cache using key

我有一个场景,如果用户通过 Cache-Control : max-age=0,那么我需要使用底层服务而不是从缓存中获取数据。但是我还需要将此记录存储在缓存中,即更新缓存。如果 cacheControl 为 null 或其他内容,则从缓存数据中获取。

目前我有

@Cacheable(key = "T(com.org.Utils).idKey(#id)",
  condition = "T(com.org.Utils).isCachingAllowed(#cacheControl)")
  public UserData get(String id, String cacheControl) {
      //Delegating to services and do the actual thing.
  }

所以目前我把它留给 callie 做 cache.put(idKey(id), userData),我觉得这是不正确的。

有没有办法使用注释来做到这一点。我正在查看 @CachePut ,但我认为这对我没有帮助。也不建议同时使用两者。

@CachePut 完全符合您的要求。摘自 javadoc

In contrast to the @Cacheable annotation, this annotation does not cause the advised method to be skipped. Rather, it always causes the method to be invoked and its result to be stored in the associated cache.

IMO,错误是将 Cache-Control 的逻辑归结为服务。您需要向上提取该逻辑并调用适当的方法。