Требование: обновлять кэш с некоторыми данными каждые 5 часов
Класс планировщика
@Component
public class SomeCacheDataUpdateScheduler{
@Autowired
DataFeignClient feignClient;
@Autowired
private CacheManager cacheManager;
@Scheduled(fixedDelay = 2000)
public void run() {
List<SomeObject> objList=feignClient.findAllData();
objList.forEach(obj->cacheManager.getCache("cache-name").put(obj.getId(), obj));
}
}
Класс конфигурации диспетчера кэша
@Configuration
public class CacheConfig{
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("cache-name");
}
}
Теперь, при отладке, я знаю, что "feignClient.findAllData ();"возвращает нужный объект.Но почему-то кеш не заполняется.И когда я получаю определенное значение из кэшированной карты, используя действительный ключ, он возвращает нулевое значение.
SomeObject sObj=cacheManager.getCache("cache-name").get("203",SomeObject.class);
Вышеуказанный вызов выполняется после запуска планировщика.
ЯБудем весьма благодарны за абсолютно новый механизм кэширования Spring Boot, и любая помощь в этом вопросе, а также передовые методы кэширования!