Spring Boot에서 모든 캐시를 제거하려면 어떻게 해야 합니까?
앱을 시작할 때 최대 20개의 캐시를 초기화했습니다.
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
cacheManager.setCaches(Arrays.asList(many many names));
return cacheManager;
}
모든 캐시를 1시간 간격으로 리셋합니다.스케줄링된 작업 사용:
@Component
public class ClearCacheTask {
private static final Logger logger = LoggerFactory.getLogger(ClearCacheTask.class);
private static final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd hh:mm:ss");
@Value("${clear.all.cache.flag}")
private String clearAllCache;
private CacheManager cacheManager;
@CacheEvict(allEntries = true, value="...............")
@Scheduled(fixedRate = 3600000, initialDelay = 3600000) // reset cache every hr, with delay of 1hr
public void reportCurrentTime() {
if (Boolean.valueOf(clearAllCache)) {
logger.info("Clearing all cache, time: " + formatter.print(DateTime.now()));
}
}
}
내가 문서를 잘못 읽고 있는 게 아니라면, 하지만@CacheEvict
캐시의 이름을 입력해야 합니다.이러한 이름은 엉망이 될 수 있습니다.
사용방법@CacheEvict
모든 캐시를 클리어 할 수 있습니까?
저는 그냥... 그냥 이런 거길...@CacheEvict
모든 캐시를 루프하기만 하면 됩니다.
cacheManager.getCacheNames().parallelStream().forEach(name -> cacheManager.getCache(name).clear());
캐시 매니저를 사용하여 모든 캐시를 지우는 스케줄링된 작업을 수행했습니다.
@Component
public class ClearCacheTask {
@Autowired
private CacheManager cacheManager;
@Scheduled(fixedRateString = "${clear.all.cache.fixed.rate}", initialDelayString = "${clear.all.cache.init.delay}") // reset cache every hr, with delay of 1hr after app start
public void reportCurrentTime() {
cacheManager.getCacheNames().parallelStream().forEach(name -> cacheManager.getCache(name).clear());
}
}
작업을 완료합니다.
다음 evictCache 메서드는 @CacheEvict 주석을 사용하여 fooCache를 제거합니다.
public class FooService {
@Autowired
private FooRespository repository;
@Cacheable("fooCache")
public List<Foo> findAll() {
return repository.findAll();
}
@CacheEvict(value="fooCache",allEntries=true)
public void evictCache() {
LogUtil.log("Evicting all entries from fooCache.");
}
}
언급URL : https://stackoverflow.com/questions/38358664/how-can-i-evict-all-cache-in-spring-boot
'programing' 카테고리의 다른 글
스프링 AAP: JoinPoint와 PointCut의 차이점은 무엇입니까? (0) | 2023.03.31 |
---|---|
알림을 받는 것은 "WP_Scripts::localize was called incorrectly" 워드프레스입니다. (0) | 2023.03.31 |
Angular를 사용한 백본모델 사용JS (0) | 2023.03.31 |
MUI Box 컴포넌트의 용도는 무엇입니까? (0) | 2023.03.31 |
프로젝터 콘솔 로그 (0) | 2023.03.31 |