Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逐出EhCache中的所有元素_Java_Spring_Ehcache_Spring Cache - Fatal编程技术网

Java 逐出EhCache中的所有元素

Java 逐出EhCache中的所有元素,java,spring,ehcache,spring-cache,Java,Spring,Ehcache,Spring Cache,我将EhCache与spring一起使用,需要公开一个端点,该端点将逐出给定EhCache中的所有元素。但我找不到任何方法来逐出所有元素。这是微不足道的,可能已经讨论过了,但我在互联网上找不到任何资源。请提供指针。您正在使用Spring缓存吗?然后 将true设置为allEntries属性 @Cacheable("myCache") public String getCache() { try { Thread.sleep(3000); } catch (fina

我将EhCache与spring一起使用,需要公开一个端点,该端点将逐出给定EhCache中的所有元素。但我找不到任何方法来逐出所有元素。这是微不足道的,可能已经讨论过了,但我在互联网上找不到任何资源。请提供指针。

您正在使用Spring缓存吗?然后 将true设置为allEntries属性

@Cacheable("myCache")
public String getCache() {
    try {
        Thread.sleep(3000);
    } catch (final InterruptedException e) {
    }
    return "aaa";
}

@CacheEvict(cacheNames = "myCache", allEntries = true)
public void evictAll() {
}
或者,如果要删除定义的所有缓存

@Autowired
CacheManager cacheManager;

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

是的,我正在使用sprig缓存,但我们能务实地做到这一点吗?我修改了我的答案。当您想要逐出所有缓存时,应该调用executeAll感谢您的响应。但我在这里看到的问题是,若要单独执行,我需要为所有缓存定义executeAll方法。是否不可能动态执行此操作?类似于:executeAllincache(String cacheName){Cache Cache=cacheManaget.getCache(cacheName);Cache.executeAll();//类似于这样的内容}我再次修改了我的答案。不幸的是,缓存管理器并没有提供像“全部逐出”这样的功能,但您可以通过lamda和流API实现这一点。我在缓存中错过了这个clear()方法,这就是我一直在寻找的。