2014-08-29 4 views
1

ehcache를 구현으로 사용하는 Spring 3.2 캐시 추상화를 사용하고 있습니다.Ehcache : 목록에서 저장된 캐시에서 항목 삭제

아래 그림과 같이 개체 목록을 반환하는 메서드의 출력을 캐시 할 수 있습니다.

public Class Employee 
    { 
     private int empId; 
     private String name; 

     //getters and setters 
} 

@Cacheable(value = "empCache") 
public List<Employee> getAllEmployess() { 

     //method queries the db and returns a list of all employees 

} 

하지만 난 업데이트 시간에 캐시에 저장된 List<Employee> 개체에서 특정 항목을 제거하거나 봄의 Cache abstraction 문서를 보면

@CacheEvict(value = "empCache", key="#empId") 
public void deleteEmployee(int empId) { 

//deletes employee object  
} 

답변

0

아래의 코드를 사용하여 @CacheEvict을 통해 삭제할 수 없습니다입니다 @Cacheable으로 정의한 내용은 캐시의 항목 중 하나이며 키 SimpleKey.EMPTY에 매핑됩니다. 메서드에 매개 변수가 없기 때문에 이러한 경우입니다. 하지만 @CacheEvictempId 키로 작동하도록 정의되어 있습니다. 따라서 두 작업간에 불일치가 있습니다.

그러나이 불일치 이외에, 나는 Spring의 캐시 추상화가 지원하는 것을 믿지 않습니다. 생각해 보면, 봄에 empId을 기반으로 목록에있는 직원을 식별하는 방법을 알려줘야합니다.