refreshAfterWrite требует загрузки кофеина в приложении весенней загрузки с кофеином.

Я пытаюсь записать приложение в кеш, которое перезагружается каждые несколько секунд. Я решил использовать Caffeine с весенней загрузкой и получил образец приложения. Но когда я указываю свойство refreshAfterWrite, оно выдает исключение: refreshAfterWrite requires a LoadingCache

spring:
    cache:
        cache-names: instruments, directory
        caffeine:
            spec: maximumSize=500, expireAfterAccess=30s, refreshAfterWrite=30s

Для решения этой проблемы я предоставляю бин Cache для загрузки, но кеш перестал работать вообще:

@Bean
    public CacheLoader<Object, Object> cacheLoader() {
        return string -> {
            System.out.println("string = " + string);
            return string;
        };
    }

    @Bean
    public LoadingCache<Object, Object> loader(CacheLoader<Object, Object> cacheLoader) {
        return Caffeine.newBuilder()
                .refreshAfterWrite(1, TimeUnit.SECONDS)
                .build(cacheLoader);
    }

Есть ли у нас какой-то простой способ перезагрузить работу?

1 ответ

Решение

В заключение, используя LoadingCache Особенность Caffeine в абстракции кэша Spring не имеет особого смысла, поскольку они имеют много общих функций.

@Cacheable обычно предоставляют способ пометить метод для извлечения элемента, которого еще нет в кэше. LoadingCache выполняет тот же сценарий, требуя от вас предоставить дескриптор, который может загрузить отсутствующий элемент по идентификатору.

Если вам абсолютно необходимо использовать LoadingCacheВпрысну Cache в вашем коде и взаимодействовать с ним программно.

Другие вопросы по тегам