Довольно простой подход, который придерживается org.springframework.cache.CacheManager
, может быть следующим:
List<String> cacheNames = List.of("aCache", "anotherCache"); // the list you are passing in
CacheManager cacheManager = new SimpleCacheManager(); // any cache manager you are injecting from anywhere
// a simple iteration, exception handling omitted for readability reasons
cacheNames.forEach(cacheName -> cacheManager.getCache(cacheName).clear());
Исключить все кэши также очень просто, за исключением того, что вы должны запросить соответствующие имена кэшей из того же менеджера кэша:
CacheManager cacheManager = new SimpleCacheManager();
Collection<String> cacheNames = cacheManager.getCacheNames();
cacheNames.forEach(cacheName -> cacheManager.getCache(cacheName).clear());
Если вы просто хотите удалить одну запись в кэше, вы можете сделать это программным путем:
cacheManager.getCache(cacheName).evict(cacheKey);
или на основе аннотаций, например
@CacheEvict(value = "yourCacheName", key = "#cacheKey")
public void evictSingleCacheValue(String cacheKey) {
}
@CacheEvict(value = "yourCacheName", allEntries = true)
public void evictAllCacheValues() {
}