Вытеснение кеша по одному из нескольких ключейJAVA

Программисты JAVA общаются здесь
Anonymous
Вытеснение кеша по одному из нескольких ключей

Сообщение Anonymous »

В моем приложении есть несколько кэшируемых методов с несколькими ключами:

Код: Выделить всё

@Cacheable(cacheNames = "valueCodes", key = "{#value, #fieldId, #projectId}")
@Cacheable(cacheNames = "fieldNames", key = "{#field, #value, #projectId}")
@Cacheable(cacheNames = "qi", key = "{#langCode, #question, #projectId}")
@Cacheable(cacheNames = "fieldCodes", key = "{#name, #projectId}")
Теперь мне нужен метод Cachevict, который очищает все кеши, в которых только ключ #projectId, который является UUID, соответствует:

Код: Выделить всё

@CacheEvict(value = {"valueCodes", "fieldCodes", "qi"; "fieldCodes"}, key = "#projectId")
В этой статье я прочитал, что это невозможно и что


Только ключевое регулярное выражение аннотации вытеснения соответствует более чем одному элементу
в каждом из имен кэша


Я не совсем уверен что они под этим подразумевают, но я думаю, это как-то связано с использованием регулярных выражений в SpEL.

Поэтому я начал думать об объединении моих ключей в один ключ:

Код: Выделить всё

@Cacheable(cacheNames="cahceName", key="concat(#projectId).concat(#otherKey)")
и используя регулярное выражение для сопоставления всех ключей с идентификатором проекта, за которым следует подстановочный знак. Но я не смог найти способ сделать это.

Возможно ли то, чего я пытаюсь достичь? Если да, то как мне это сделать?

Подробнее здесь: https://stackoverflow.com/questions/409 ... tiple-keys

Вернуться в «JAVA»