如果我有以下配置:
<defaultCache timeToIdleSeconds="120"
timeToLiveSeconds="120" />
<cache name="test"
timeToLiveSeconds="300" />
timeToIdleSeconds
缓存的值是test
多少?它会从默认缓存继承,因此等于 120,还是会采用手册中给出的默认值,即 0(无穷大)?
如果我有以下配置:
<defaultCache timeToIdleSeconds="120"
timeToLiveSeconds="120" />
<cache name="test"
timeToLiveSeconds="300" />
timeToIdleSeconds
缓存的值是test
多少?它会从默认缓存继承,因此等于 120,还是会采用手册中给出的默认值,即 0(无穷大)?
timeToIdleSeconds 将是默认值,而不是从“defaultCache”继承。“defaultCache”有点用词不当/误导,因为它没有为每个缓存提供“默认值”,但它只是为可以/动态添加的缓存指定配置的一种方式 - 使用 cacheManager.addCache(String cacheName )。
从http://www.ehcache.org/ehcache.xml,该标签的文档读取
默认缓存配置。 这些设置将应用于以编程方式创建的缓存,使用 CacheManager.add(字符串缓存名称)。这个元素是可选的,并且使用 CacheManager.add(String cacheName) 不存在时会抛出 CacheException defaultCache 有一个隐含的名称“default”,它是一个保留的缓存名称。
private Ehcache cloneDefaultCache(final String cacheName) {
if (defaultCache == null) {
return null;
}
Ehcache cache;
try {
cache = (Ehcache) defaultCache.clone();
} catch (CloneNotSupportedException e) {
throw new CacheException("Failure cloning default cache. Initial cause was " + e.getMessage(), e);
}
if (cache != null) {
cache.setName(cacheName);
}
return cache;
}
Method
cloneDefaultCache(String)
Found usages (2 usages found)
Library (2 usages found)
Unclassified usage (2 usages found)
Maven: net.sf.ehcache:ehcache-core:2.6.11 (2 usages found)
net.sf.ehcache (2 usages found)
CacheManager (2 usages found)
addCache(String) (1 usage found)
1173 Ehcache clonedDefaultCache = cloneDefaultCache(cacheName);
addCacheIfAbsent(String) (1 usage found)
1857 Ehcache clonedDefaultCache = cloneDefaultCache(cacheName);