3

我有一个 ehcache 的实现,它不使用 xml 中的任何配置,但如下所示:

private Ehcache cache;

constructor {
  cache = CacheManager.getInstance().addCacheIfAbsent("nameOfCache");
  CacheConfiguration config = cache.getCacheConfiguration();
  config.eternal("false")
  config.setTimeToLiveSeconds(<someTime>);
}

现在,我以前使用过番石榴缓存,我知道通过将驱逐时间设置为0番石榴缓存,它会关闭缓存。但是通过阅读有关 ehcache 的文档,我了解到情况并非如此。有没有其他方法可以关闭缓存?

4

2 回答 2

15

Ehcache FAQ中,您可以设置net.sf.ehcache.disabled系统属性以禁止 Ehcache 将元素添加到缓存。因为不会将任何元素添加到缓存中,所以每个缓存请求都会导致缓存未命中,从而提供您正在寻找的行为。

如果您从命令行启动 JVM,您可以像这样设置属性:

-Dnet.sf.ehcache.disabled=true
于 2013-03-13T16:31:36.180 回答
0

不知道如何为 Ehcache 执行此操作,但我们在我的项目中做了类似的事情。首先,我们为缓存编写了一个外观模式(以允许在其后面使用 Ehcache 或 Guava 缓存)。然后我实现了一个OptionalCacheNullable缓存或缓存构建器作为构造函数的方法。如果缓存存在,则OptionalCache使用它,否则不存在(使用CacheLoader获取值或返回null)。这允许我们为缓存/缓存构建器传递 null 以进行测试。

于 2013-03-13T16:27:37.907 回答