

Table of Contents
1. Overview
This article is about spring clear all cache or spring cache evict programmatically. Spring internally create org.springframework.cache.CacheManager bean which help us to manage the cache. Here is an article on how to configure spring cache with the database.
If we want to clear particular cache then @CacheEvict annotation can be used. Here is example of clear cache using @CacheEvict annotation.
2. Ways to clear all cache
- CacheManager.getCacheNames() return name of all caches which is stored internally by spring cache.
- CacheManager.getCache() return
org.springframework.cache.Cacheobject which contains actual data.org.springframework.cache.Cachehasclear()method using that we can clear cache data.
1. Clear or evict cache programmatically
When we call localhost:[port]/clearCache it will evict all cache.
package com.javadeveloperzone.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.CacheManager;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created by JavaDeveloperZone on 30-04-2018.
*/
@RestController // for rest response
public class CacheController {
@Autowired
private CacheManager cacheManager; // autowire cache manager
// clear all cache using cache manager
@RequestMapping(value = "clearCache")
public void clearCache(){
for(String name:cacheManager.getCacheNames()){
cacheManager.getCache(name).clear(); // clear cache by name
}
}
}
2. Clear or evict cache by the time interval
To delete all cache at every 30 min we have set here,@Scheduled So at every 30 min scheduler will be executed and cache will be cleared. We can write Scheduler inside Controller, Component and Service.
@Autowired
private CacheManager cacheManager; // autowire cache manager
@Scheduled(cron = "0 0/30 * * * ?") // execure after every 30 min
public void clearCacheSchedule(){
for(String name:cacheManager.getCacheNames()){
cacheManager.getCache(name).clear(); // clear cache by name
}
}3. References
Was this post helpful?
Let us know if you liked the post. That’s the only way we can improve.
