我有一个ehcache的实现,它不使用xml中的任何配置,但如下所示:
private Ehcache cache;
constructor {
cache = CacheManager.getInstance().addCacheIfAbsent("nameOfCache");
CacheConfiguration config = cache.getCacheConfiguration();
config.eternal("false")
config.setTimeToLiveSeconds(<someTime>);
}
现在,我之前使用过番石榴缓存,我知道通过在番石榴缓存中将驱逐时间设置为0
,它会关闭缓存。但是通过阅读有关ehcache的文档,我理解它不是同一个案例。还有其他方法可以关闭缓存吗?
答案 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以进行测试。