目前,我正在为我的web应用程序使用Spring web framework。我已经实现了一个基本的CacheConfig。读取ehcache的java文件。xml和创建CacheManager,用于从缓存中获取元素或将元素添加到缓存中。我的ehcache。慢性粒细胞白血病如下:
<cache name="Cache"
maxEntriesLocalHeap="100"
maxEntriesLocalDisk="0"
eternal="false"
diskSpoolBufferSizeMB="0"
timeToIdleSeconds="43200"
timeToLiveSeconds="43200"
memoryStoreEvictionPolicy="LFU"
>
<persistence strategy="none"/>
如何确保通过首先从后端数据库(SOR)中查找对象来刷新缓存,并且只有在成功检索时才能删除元素的旧版本?
编辑
:refreshahead策略的CacheLoader。
public class TestCacheLoader implements CacheLoader {
@Override
public Object load(Object key) throws CacheException {
//return null;
return load(key,null);
}
@Override
public Map loadAll(Collection keys) {
//return null;
return loadAll(keys,null);
}
@Override
public Object load(Object key, Object argument) {
Object obj = null;
try {
obj = ReadFromDatabase(key);
} catch (DatabaseValueNotFoundException e) {
**How can I return the old value here?**
}
return obj;
}
@Override
public Map loadAll(Collection keys, Object argument) {
//return null;
Map newValues = new HashMap<Object,Object>();
for(Object key : keys){
Object value = load(key,null);
if(value != null){
newValues.put(key,value);
}
}
return newValues;
}
@Override
public String getName() {
return null;
}
@Override
public CacheLoader clone(Ehcache ehcache) throws CloneNotSupportedException {
return null;
}
@Override
public void init() {
}
@Override
public void dispose() throws CacheException {
}
@Override
public Status getStatus() {
return null;
}
}