14

如果我有以下配置:

<defaultCache timeToIdleSeconds="120"
        timeToLiveSeconds="120" />
<cache name="test"
        timeToLiveSeconds="300" />

timeToIdleSeconds缓存的值是test多少?它会从默认缓存继承,因此等于 120,还是会采用手册中给出的默认值,即 0(无穷大)?

4

2 回答 2

15

timeToIdleSeconds 将是默认值,而不是从“defaultCache”继承。“defaultCache”有点用词不当/误导,因为它没有为每个缓存提供“默认值”,但它只是为可以/动态添加的缓存指定配置的一种方式 - 使用 cacheManager.addCache(String cacheName )。

http://www.ehcache.org/ehcache.xml,该标签的文档读取

默认缓存配置。
这些设置将应用于以编程方式创建的缓存,使用
 CacheManager.add(字符串缓存名称)。这个元素是可选的,并且使用
 CacheManager.add(String cacheName) 不存在时会抛出 CacheException
 defaultCache 有一个隐含的名称“default”,它是一个保留的缓存名称。
于 2012-06-07T16:11:18.357 回答
0
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);
于 2019-10-14T08:34:08.763 回答