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
в вашем коде и взаимодействовать с ним программно.