3

我正在尝试驱逐 Spring 管理的缓存(Spring 3.1 抽象)中的条目。

我需要参考注解中“key”属性的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);
}

有没有办法做到这一点?

4

2 回答 2

2

似乎没有任何方法可以引用返回的对象:

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

但是为什么你需要这样做呢?您可以参考@CacheEvict "key" 值中的参数,例如:

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

更多示例代码响应以下关于必须使用 User 对象的多个属性从多个缓存中逐出的响应:

@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 {
...
}
于 2012-06-07T18:56:26.253 回答
2

尝试在你的 SpEL 中使用#result

于 2019-03-05T17:46:12.540 回答