예기치입니다. 이제 list 요소에 Put 작업을 수행하고 있습니다. 해당 요소에 대해 작업이 성공적으로 수행되고 캐시도 업데이트됩니다. 하지만 GET 작업을하고있는 중이 야 때 다시 내 업데이트 캐시가 작동 여부 을 테스트 목록을 검색, 내가 대신 전체 목록 여기봄 @CachePut 응답은 내가 목록을 검색 할 수있는 가져 오기 작업을 수행 예상대로 cache.It의 응답이 제대로 작동 저장 내가 SpringBoot</p> <p>와 함께으로 Ehcache를 사용하고
의 업데이트됩니다 응답 단지 요소를 가지고 코드는 다음과 같습니다
@Override
@Cacheable(value = "practiceId", key="#practiceId", unless="#result==null")
public List<ExposedLocation> getLocations(String practiceId) {
// getLocations list logic
}
@CachePut(value = "practiceId", key ="#practiceId")
public List<ExposedLocation> updateLocation(List<LocationDB> locationList, String practiceId) {
//Update location logic
}
ehcache.xml :
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="false">
<cache name="practiceId" maxEntriesLocalHeap="200" eternal="false"
memoryStoreEvictionPolicy="LFU" timeToLiveSeconds="600"
timeToIdleSeconds="200">
</cache>
그래서 응답 내 분석에 따라 그리고 내가 사용한 몇 가지 테스트 케이스들 Get과 Put의 Response가 다르다는 결론을 내 렸습니다. @CachePut은 먼저 캐시를 제거하고 새 캐시를 생성하고 을 생성하고 새로운 캐시에 업데이트의 응답을 넣습니다.
누구든지 업데이트 된 요소가 포함 된 전체 목록을 검색하는 데 도움을 줄 수 있습니다. 여기서 @CachePut ??????를 구성하지 못했습니다.
그래서 이전 캐시의 백업에 논리를 추가하고 새로운 캐시에 병합해야한다고 말합니다. 맞습니까? –
두 방법 모두 동일한 결과를 반환하는지 확인하십시오. –