2017-12-27 21 views
0

저는 Spring과 함께 EhCache를 사용하고 있으며, 주어진 EhCache의 모든 요소를 ​​제거 할 엔드 포인트를 노출해야합니다. 그러나 모든 요소를 ​​제거하는 방법을 찾을 수는 없습니다. 그것은 사소한 것으로 이미 논의되었을 지 모르지만 나는 인터넷에서 어떤 자원도 찾을 수 없었다. 포인터를 제공하십시오.EhCache에있는 모든 요소를 ​​제거하십시오.

답변

2

스프링 캐쉬를 사용하고 있습니까? 다음 당신이

@Autowired 
CacheManager cacheManager; 

public void evictAll() { 
    cacheManager.getCacheNames() 
      .stream() 
      .forEach(n -> cacheManager.getCache(n).clear()); 
} 
+0

예를 정의 된 모든 캐시를 삭제하려면, 내가 장식 캐시를 사용하고 있습니다하지만 우리는 실용적이 작업을 수행 할 수 allEntries 속성

@Cacheable("myCache") public String getCache() { try { Thread.sleep(3000); } catch (final InterruptedException e) { } return "aaa"; } @CacheEvict(cacheNames = "myCache", allEntries = true) public void evictAll() { } 

true로 설정하거나? –

+0

나는 내 대답을 고쳤다. 당신은 모든 캐시를 없애기 위해 evictAll을 호출해야합니다. – Javvano

+0

응답 해 주셔서 감사합니다. 그러나 여기서 볼 수있는 문제는 별도로 수행하려는 경우 모든 캐시에 대해 evictAll 메소드를 정의해야한다는 것입니다. 이 작업을 동적으로 수행 할 수 있습니까? 다음과 같이 : evictAllInCache (String cacheName) { 캐시 캐시 = cacheManaget.getCache (cacheName); cache.evictAll(); // 이것과 비슷한 것 } –