0

I have a cache thats populated via @Cacheable as follows

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

I would like to know what will be the key value pair for this cache? I am using ehcahe to do the caching.

4

1 回答 1

0

密钥将基于您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());
    } 
于 2012-04-23T19:47:38.747 回答