如何为测试目的关闭ehcache

时间:2013-03-13 16:21:40

标签: java ehcache

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

private Ehcache cache;

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

现在,我之前使用过番石榴缓存,我知道通过在番石榴缓存中将驱逐时间设置为0,它会关闭缓存。但是通过阅读有关ehcache的文档,我理解它不是同一个案例。还有其他方法可以关闭缓存吗?

2 个答案:

答案 0 :(得分:14)

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

如果从命令行启动JVM,则可以设置如下属性:

-Dnet.sf.ehcache.disabled=true

答案 1 :(得分:0)

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