抛出refreshAfterWrite的咖啡因缓存的refreshAfterWrite方法需要LoadingCache异常

时间:2019-01-07 05:30:15

标签: spring caching caffeine

我要求通过再次调用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

1 个答案:

答案 0 :(得分:0)

您需要为build方法提供一个CacheLoader

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

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