2012-04-23 50 views
0

填充鍵值我必須通過@Cacheable填充緩存,多數民衆贊成如下什麼在緩存通過@Cachable

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

我想知道會有怎樣的鍵值對這個緩存?我正在使用ehcahe來進行緩存。

回答

0

關鍵將基於您的getAccInfo()方法的參數。值將會是您的方法返回的List<Acc>

按照docs

28.3.1.1默認密鑰生成

由於緩存是基本上鍵值存儲,需要一個高速緩存 方法的每一次調用被翻譯成一個合適的鍵緩存 訪問。開箱即用的,緩存抽象使用基於以下算法簡單 的KeyGenerator:

  • 如果沒有PARAMS給出,返回0
  • 如果只有一個參數是給定的,返回該實例。
  • 如果給出了更多的參數,則返回從所有參數的散列計算出來的關鍵字。

看着爲DefaultKeyGenerator的源代碼,這是如何計算「的所有參數的哈希值計算的關鍵」:

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