현재 웹 응용 프로그램에 Spring 웹 프레임 워크를 사용하고 있습니다. 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;
}
}
제 편집을 참조하십시오. 캐시 로더가 값을로드하는 캐시의 값에 액세스 할 수 없으므로 캐시에서 이전 값을 반환하는 방법을 이해할 수 없습니다. –