1

我需要通过再次调用 API 来重新缓存过期的缓存

以下是我的缓存管理器配置

private CaffeineCache buildCache(
    String name,
    Ticker ticker,
    int minutesToExpire
) {
    return new CaffeineCache(name, Caffeine.newBuilder()
                .refreshAfterWrite(minutesToExpire, TimeUnit.MINUTES)
                .maximumSize(100)
                .ticker(ticker)
                .build());
}

但是在启动应用程序时,它会抛出以下异常

原因:java.lang.IllegalStateException: refreshAfterWrite 需要 LoadingCache

4

1 回答 1

1

您需要为该方法提供一个CacheLoaderbuild

return new CaffeineCache(
        name,
        Caffeine.newBuilder()
                .refreshAfterWrite(minutesToExpire, TimeUnit.MINUTES)
                .maximumSize(100)
                .ticker(ticker)
                .build(key -> createExpensiveObject(key))
);

CacheLoader 是一个必须由您实现的类/方法。

于 2020-08-28T10:25:44.753 回答