Какое значение ключа в кеше заполняется через @Cachable

У меня есть кеш, который заполняется через @Cacheable следующим образом

    @Cacheable(value = "accountGroupCache")
public List<Acc> getAccInfo(int groupId, String user)

Я хотел бы знать, какая будет пара ключ-значение для этого кеша? Я использую ehcahe для кэширования.


person user325643    schedule 23.04.2012    source источник


Ответы (1)


Ключ будет основан на параметрах вашего метода getAccInfo(). Значение будет List<Acc>, возвращаемым вашим методом.

Согласно документы:

28.3.1.1 Генерация ключа по умолчанию

Поскольку кеши по сути представляют собой хранилища ключей и значений, каждый вызов кэшированного метода необходимо преобразовать в подходящий ключ для доступа к кешу. По умолчанию абстракция кэширования использует простой KeyGenerator, основанный на следующем алгоритме:

  • Если параметры не указаны, вернуть 0.
  • Если указан только один параметр, верните этот экземпляр.
  • Если задано больше одного параметра, вернуть ключ, вычисленный из хэшей всех параметров.

Глядя на исходный код для DefaultKeyGenerator, вот как он вычисляет "ключ, вычисленный из хэшей всех параметров":

    int hashCode = 17;
    for (Object object : params) {
        hashCode = 31 * hashCode + 
                          (object == null ? NULL_PARAM_KEY : object.hashCode());
    } 
person sourcedelica    schedule 23.04.2012