我有一个通过@Cacheable填充的缓存,如下所示
@Cacheable(value = "accountGroupCache")
public List<Acc> getAccInfo(int groupId, String user)
我想知道这个缓存的键值对是什么?我正在使用ehcahe进行缓存。
答案 0 :(得分:0)
密钥将基于getAccInfo()
方法的参数。该值将是您的方法返回的List<Acc>
。
根据docs:
28.3.1.1默认密钥生成
由于缓存本质上是键值存储,因此每次调用一个 需要将缓存的方法转换为适合缓存的密钥 访问。开箱即用,缓存抽象使用简单 KeyGenerator基于以下算法:
- 如果没有给出参数,则返回0.
- 如果只给出一个参数,则返回该实例。
- 如果给出了更多的参数,则返回从所有参数的哈希计算出的密钥。
查看DefaultKeyGenerator的源代码,这就是它如何计算“从所有参数的哈希计算的密钥”:
int hashCode = 17;
for (Object object : params) {
hashCode = 31 * hashCode +
(object == null ? NULL_PARAM_KEY : object.hashCode());
}