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

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

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

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

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());
    } 
Другие вопросы по тегам