Я попробовал аннотацию @CachePut в методе updateCategoryCacheForCountry, но она не сработала. Но
если делать это программно, получая кеш и используя .put, все работает нормально. В чем может быть причина?
Я использую Spring Cache. Метод вызывается методом @Scheduled.
// @CachePut(key = "#country")
public CacheCategories updateCategoryCacheForCountry(String country) {
CacheCategories categories = requestDirectus(country);
Cache categoriesCache = cacheManager.getCache("categories");
categoriesCache.put(country, categories);
return categories;
}
@Scheduled(fixedDelay = 300000) //5m
protected void updateCategories() {
String[] countries = {esConfig.getStoreArgentina(), esConfig.getStoreChile(), esConfig.getStoreParaguay(), esConfig.getStoreBolivia()};
for (String country : countries) {
updateCategoryCacheForCountry(country);
}
}
@EnableCaching
@Configuration
@EnableScheduling
public class CacheConfig {
@Bean // Configuramos el cache a utilizar
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(
new ConcurrentMapCache("categories"),
new ConcurrentMapCache("token")
));
return cacheManager;
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... d-put-does