Вопрос по java, spring – Spring 3.1 кеш - как использовать возвращаемое значение в SpEL

3

Я пытаюсь исключить запись из кеша, управляемого Spring (абстракция Spring 3.1).

Мне нужно сослаться на возвращаемое значение метода в SpEL & quot; ключа & quot; недвижимость в аннотации:

    /* (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);
}

Есть какой-либо способ сделать это?

Вы еще не можете увидетьSPR-8871 и принять участие. Stevo Slavić
Вinfoq.com/presentations/Spring-Security-3 (в 1:04:00) Wiesner использует filterObject в качестве дескриптора возвращаемого значения, но это, вероятно, только дескриптор Spring Security. Думаю, стоит попробовать. Emerson Farrugia

Ваш Ответ

2   ответа
0

2

что существует какой-либо способ ссылки на возвращенный объект:

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

Но зачем тебе это делать? Вы можете ссылаться на аргументы в ключе @CacheEvict & quot; quot; значение, например:

@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 {
...
}
Error: User Rate Limit Exceeded Francisco Lozano
Я отредактировал свой ответ с помощью еще одного примера кода, который может лучше соответствовать вашей ситуации, основываясь на вашем комментарии.
Error: User Rate Limit Exceeded Francisco Lozano
Error: User Rate Limit Exceededstatic.springsource.org/spring/docs/3.1.x/…

Похожие вопросы