次のように @Cacheable を介して設定されたキャッシュがあります
@Cacheable(value = "accountGroupCache")
public List<Acc> getAccInfo(int groupId, String user)
このキャッシュのキーと値のペアは何になりますか? 私はキャッシングを行うためにehcaheを使用しています。
キーは、メソッドのパラメーターに基づきます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());
}