2012-05-21 1 views
3

Spring 관리 캐시 (Spring 3.1 추상화)에서 항목을 제거하려고합니다.Spring 3.1 캐시 - SpEL에서 반환 된 값을 사용하는 방법

내가 주석의 "키"속성의 SpEL을에 메소드의 반환 값을 참조 할 필요가

:이 작업을 수행 할 수있는 방법이

/* (How to refer to the 'T' returned value in the "KEY_ID"?) */ 
@Caching(evict = { @CacheEvict(value = CACHE_BY_ID, key = KEY_ID) }) 
public T delete(AppID appID, UserID userID) throws UserNotFoundException { 
    return inner.delete(appID, userID); 
} 

있습니까? 반환 된 객체 참조 할 수있는 방법이 같은

+0

http://www.infoq.com/presentations/Spring-Security-3 (1:04:00)에서 Wiesner는 반환 값의 핸들로 filterObject를 사용하지만 이는 스프링 보안 핸들 일뿐입니다. 가치가있는 것 같아. –

+1

아직 [SPR-8871] (https://jira.springsource.org/browse/SPR-8871)을보고 참여할 수는 없습니다. –

답변

2

이 보이지 않는다 :

http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/cache.html#cache-spel-context

은 그러나 당신은 왜 그렇게해야합니까?

: 사용자 개체의 여러 속성을 사용하여 여러 캐시에서 퇴거 할 필요에 대해 아래의 응답에 응답

@CacheEvict(value = CACHE_BY_ID, key = "#userID") 
public T delete(AppID appID, UserID userID) throws UserNotFoundException { 
... 
} 

더 많은 예제 코드 : 당신은, 예를 들어 @CacheEvict "키"값에 인수를 참조 할 수 있습니다

@Caching(evict = { 
    @CacheEvict(value = CACHE_BY_ID, key = "#user.userID"), 
    @CacheEvict(value = CACHE_BY_LOGIN_NAME, key = "#user.loginName") 
    // etc. 
}) 
public T delete(AppID appID, User user) throws UserNotFoundException { 
... 
} 
+0

"delete"에 의해 반환 된 T 클래스 객체는 다음과 같은 객체입니다. class User { UserID userID; LoginName loginName; EmailAddress emailAddress; ... }. 하나 이상의 캐시가 있습니다. 하나는 userID, 다른 하나는 loginName, 다른 하나는 emailAddress입니다. userID에 의해 항목을 제거 할 때 다른 두 캐시의 항목도 만료시키고 싶습니다 ... 이러한 키는 반환 값에 포함되어 있으므로 할 수 있으면 좋을 것입니다 : @CacheEvict (key = "# returnValue.loginName"...), @CacheEvict (key = "# returnValue.emailAddress"...) –

+1

User 객체 대신 인수로 User 객체를 전달할 수 있습니다. SpEL에서 다른 사용자 속성을 참조하십시오. 서로 다르게 구성된 여러 개의 \ @ CacheEvict를 수행해야하는 경우이를 \ @ 캐싱 주석과 결합해야합니다. http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference /html/cache.html#cache-annotations-caching – sdouglass

+0

귀하의 의견에 따라 귀하의 상황에 더 적합한 예제 코드를 사용하여 답변을 편집했습니다. – sdouglass