0

次のように @Cacheable を介して設定されたキャッシュがあります

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

このキャッシュのキーと値のペアは何になりますか? 私はキャッシングを行うためにehcaheを使用しています。

4

1 に答える 1

0

キーは、メソッドのパラメーターに基づきますgetAccInfo()。値はList<Acc>、メソッドによって返されます。

ドキュメントによると:

28.3.1.1 デフォルトの鍵生成

キャッシュは本質的にキーと値のストアであるため、キャッシュされたメソッドの呼び出しごとに、キャッシュ アクセスに適したキーに変換する必要があります。すぐに使用できるキャッシングの抽象化は、次のアルゴリズムに基づく単純な KeyGenerator を使用します。

  • パラメータが指定されていない場合は、0 を返します。
  • パラメータが 1 つしか指定されていない場合は、そのインスタンスを返します。
  • 複数のパラメータが指定された場合、すべてのパラメータのハッシュから計算されたキーを返します。

DefaultKeyGeneratorのソース コードを見ると、これは「すべてのパラメーターのハッシュから計算されたキー」を計算する方法です。

    int hashCode = 17;
    for (Object object : params) {
        hashCode = 31 * hashCode + 
                          (object == null ? NULL_PARAM_KEY : object.hashCode());
    } 
于 2012-04-23T19:47:38.747 に答える