如何使用EhCache获得旧的缓存?

时间:2018-10-29 12:16:17

标签: java spring caching ehcache

我有一个简单的例子:在我的BCService类中,我称BCRepository。

@Component
public class BCService implements BCServiceApi {
    public static final String CACHE_KEY = "name";

    @Autowired
    private BCRepository repository;

    @Cacheable(value = "header", key = "#root.target.CACHE_KEY")
    public String getHeader() {
        return repository.getHeader();
    }
}

在我的BCRepository类中,我调用了一个从外部服务返回String的端点。

ResponseEntity<String> response = restTemplate.exchange(url,HttpMethod.GET, new HttpEntity<>(headers), String.class);
return Objects.requireNonNull(response.getBody());

我缓存了BCService方法,所以我将不再做任何事情。在我的ehcache.xml文件中,timeToIdleSeconds设置为60秒。 60秒后,我再次致电外部服务以查找更改并将其缓存。

<cache name="header"
       maxEntriesLocalHeap="10000"
       maxEntriesLocalDisk="1000"
       eternal="false"
       diskSpoolBufferSizeMB="20"
       timeToIdleSeconds="60" timeToLiveSeconds="600"
       memoryStoreEvictionPolicy="LFU"
       transactionalMode="off">
    <persistence strategy="localTempSwap" />
</cache> 

我的问题是,如果外部服务突然不可用,我该如何使BCService.getHeader()仍返回最后缓存的字符串?

0 个答案:

没有答案