¿Es posible programar el desalojo del caché de primavera para todos los días a la medianoche?
Leí Springs Cache Docs y no encontré nada sobre el desalojo de caché programado.
Necesito desalojar el caché diariamente y volver a almacenarlo en caso de que haya cambios fuera de mi aplicación.
Trate de usar @Scheduled Ejemplo:
@Scheduled(fixedRate = ONE_DAY) @CacheEvict(value = { CACHE_NAME }) public void clearCache() { log.debug("Cache '{}' cleared.", CACHE); }También puede usar la expresión cron con @Scheduled.
Si usa @Cacheable en métodos con parámetros, NUNCA debe olvidar la propiedad de anotación allEntries=true en @CacheEvict; de lo contrario, su llamada solo expulsará el parámetro clave que le dio al método clearCache(), que no es nada => lo hará no desalojar nada de la memoria caché.
Tal vez no sea la solución más elegante, pero @CacheEvict no funcionaba, así que opté directamente por CacheManager .
Este código borra un caché llamado foo a través del programador:
class MyClass { @Autowired CacheManager cacheManager; @Cacheable(value = "foo") public Int expensiveCalculation(String bar) { ... } @Scheduled(fixedRate = 60 * 1000); public void clearCache() { cacheManager.getCache("foo").clear(); } }