refreshAfterWrite требует загрузки кофеина в приложении весенней загрузки с кофеином. - PullRequest
0 голосов
/ 06 декабря 2018

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

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

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

@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 Ответ

0 голосов
/ 13 декабря 2018

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

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

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

...