現在、私はWebアプリケーション用にSpring Webフレームワークを使用しています。私は、ehcache.xmlを読み込み、CacheManagerを作成し、キャッシュから要素を取得したり、要素をキャッシュに追加するために使用される、基本的なCacheConfig.javaファイルを実装しました。次のように私のehcache.cmlは次のとおりです。オブジェクトの新しいバージョンを正常に取得したときにのみ期限切れのオブジェクトを置き換えるようにehcacheを設定する方法
<cache name="Cache"
maxEntriesLocalHeap="100"
maxEntriesLocalDisk="0"
eternal="false"
diskSpoolBufferSizeMB="0"
timeToIdleSeconds="43200"
timeToLiveSeconds="43200"
memoryStoreEvictionPolicy="LFU"
>
<persistence strategy="none"/>
最初の要素の古いバージョンが削除されますないだけ正常な取得にとバックエンドデータベース(SOR)からオブジェクトを探すことでリフレッシュされるどのように私はそのキャッシュを確保することができます?
EDIT:リフレッシュヘッド戦略のための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;
}
}
私の編集をご覧ください。キャッシュローダーは値をロードするキャッシュ内の値にアクセスできないため、古い値をキャッシュに戻す方法はわかりません。 –