クラス ConcurrentMapCache
- 実装されているすべてのインターフェース:
- Cache
java.util.concurrent パッケージに基づく単純な Cache 実装。 通常は SimpleCacheManager と組み合わせて、または ConcurrentMapCacheManager を介して動的にテストまたは単純なキャッシングシナリオに役立ちます。
 デフォルトの CompletableFutureSE 実行 (通常は JVM の ForkJoinPool.commonPool() 内) に依存して、ベストエフォート方式で retrieve(Object) および retrieve(Object, Supplier) 操作をサポートします。
 注意 : ConcurrentHashMapSE(使用されるデフォルトの実装)は null 値の格納を許可しないため、このクラスはそれらを事前定義された内部オブジェクトで置き換えます。この動作は、ConcurrentMapCache(String, ConcurrentMap, boolean) コンストラクターを使用して変更できます。
- 導入:
- 3.1
- 作成者:
- Costin Leau, Juergen Hoeller, Stephane Nicoll
- 関連事項:
- ネストされたクラスの要約- インターフェース org.springframework.cache.Cache から継承されたネストクラス / インターフェース- Cache.ValueRetrievalException, Cache.ValueWrapper
- コンストラクターの概要コンストラクター修飾子コンストラクター説明- ConcurrentMapCache- (StringSE name) 指定された名前で新しい ConcurrentMapCache を作成します。- ConcurrentMapCache- (StringSE name, boolean allowNullValues) 指定された名前で新しい ConcurrentMapCache を作成します。- ConcurrentMapCache- (StringSE name, ConcurrentMapSE<ObjectSE, - ObjectSE> store, boolean allowNullValues) 指定された名前と指定された内部- ConcurrentMapSE を使用して新しい ConcurrentMapCache を作成します。- protected- ConcurrentMapCache- (StringSE name, ConcurrentMapSE<ObjectSE, - ObjectSE> store, boolean allowNullValues, SerializationDelegate serialization) 指定された名前と指定された内部- ConcurrentMapSE を使用して新しい ConcurrentMapCache を作成します。
- メソッドのサマリー修飾子と型メソッド説明- void- clear()すべてのマッピングを削除してキャッシュをクリアします。- voidこのキーが存在する場合、このキャッシュからこのキーのマッピングを削除します。- boolean- evictIfPresent- (ObjectSE key) このキーが存在する場合は、このキーのマッピングを削除し、以降の検索ではキーがすぐに見えないことを期待します。- protected ObjectSE- fromStoreValue- (ObjectSE storeValue) 指定された値を内部ストアから get メソッドから返されたユーザー値に変換します(- nullを適応)。- <T> T- get- (ObjectSE key, CallableSE<T> valueLoader) このキャッシュが指定されたキーをマップする値を返し、必要に応じて- valueLoaderからその値を取得します。- final StringSE- getName()キャッシュ名を返します。- final ConcurrentMapSE<ObjectSE,- ObjectSE> 基になるネイティブキャッシュプロバイダーを返します。- booleanすべてのマッピングを削除してキャッシュを無効にし、以降のルックアップではすべてのエントリがすぐに表示されないようにします。- final booleanこのキャッシュに各エントリのコピー(- true)または参照(- false、デフォルト)のどちらが格納されているかを返します。- protected ObjectSE基になるストアで実際のルックアップを実行します。- void指定された値をこのキャッシュ内の指定されたキーに関連付けます。- putIfAbsent- (ObjectSE key, ObjectSE value) 指定された値が設定されていない場合、指定された値をこのキャッシュ内の指定されたキーと原子的に関連付けます。このキャッシュが指定されたキーをマップする値を- CompletableFutureSE でラップして返します。- <T> CompletableFutureSE<T>- retrieve- (ObjectSE key, SupplierSE<CompletableFutureSE<T>> valueLoader) このキャッシュが指定されたキーをマップする値を返し、必要に応じて- valueLoaderからその値を取得します。- protected ObjectSE- toStoreValue- (ObjectSE userValue) put メソッドに渡された指定のユーザー値を内部ストアの値に変換します(- nullを適応)。- クラス org.springframework.cache.support.AbstractValueAdaptingCache から継承されたメソッド- get, get, isAllowNullValues, toValueWrapper
- コンストラクターの詳細- ConcurrentMapCache指定された名前で新しい ConcurrentMapCache を作成します。- パラメーター:
- name- キャッシュの名前
 
- ConcurrentMapCache指定された名前で新しい ConcurrentMapCache を作成します。- パラメーター:
- name- キャッシュの名前
- allowNullValues- このキャッシュの- null値を受け入れて変換するかどうか
 
- ConcurrentMapCachepublic ConcurrentMapCache- (StringSE name, ConcurrentMapSE<ObjectSE, - ObjectSE> store, boolean allowNullValues) 指定された名前と指定された内部- ConcurrentMapSE を使用して新しい ConcurrentMapCache を作成します。- パラメーター:
- name- キャッシュの名前
- store- 内部ストアとして使用する ConcurrentMap
- allowNullValues-- null値を許可するかどうか (それらを内部の null ホルダー値に適合させる)
 
- ConcurrentMapCacheprotected ConcurrentMapCache- (StringSE name, ConcurrentMapSE<ObjectSE, - ObjectSE> store, boolean allowNullValues, @Nullable SerializationDelegate serialization) 指定された名前と指定された内部- ConcurrentMapSE を使用して新しい ConcurrentMapCache を作成します。- SerializationDelegateを指定すると、- store-by-valueが有効になります- パラメーター:
- name- キャッシュの名前
- store- 内部ストアとして使用する ConcurrentMap
- allowNullValues-- null値を許可するかどうか (それらを内部の null ホルダー値に適合させる)
- serialization- キャッシュエントリの直列化に使用する- SerializationDelegateまたは参照を格納する- null
- 導入:
- 4.3
 
 
- メソッドの詳細- isStoreByValuepublic final boolean isStoreByValue()このキャッシュに各エントリのコピー(- true)または参照(- false、デフォルト)のどちらが格納されているかを返します。値による保管が有効になっている場合、キャッシュ内の各エントリはシリアライズ可能でなければなりません。- 導入:
- 4.3
 
- getNameインターフェースからコピーされた説明:- Cacheキャッシュ名を返します。
- getNativeCacheインターフェースからコピーされた説明:- Cache基になるネイティブキャッシュプロバイダーを返します。
- lookupクラスからコピーされた説明:- AbstractValueAdaptingCache基になるストアで実際のルックアップを実行します。- 次で指定:
-  クラス AbstractValueAdaptingCacheのlookup
- パラメーター:
- key- 関連する値が返されるキー
- 戻り値:
-  キーの生のストア値、ない場合は null
 
- getインターフェースからコピーされた説明:- Cacheこのキャッシュが指定されたキーをマップする値を返し、必要に応じて- valueLoaderからその値を取得します。このメソッドは、従来の「キャッシュされている場合は返す、そうでない場合は作成、キャッシュして返す」パターンの単純な代替を提供します。- 可能な場合、実装は、同じキーへの同時アクセスの場合に指定された - valueLoaderが 1 回だけ呼び出されるように、ロード操作が同期されることを確認する必要があります。- valueLoaderが例外をスローした場合、- Cache.ValueRetrievalExceptionにラップされます- パラメーター:
- key- 関連する値が返されるキー
- 戻り値:
- このキャッシュが指定されたキーをマップする値
- 関連事項:
 
- retrieveインターフェースからコピーされた説明:- Cacheこのキャッシュが指定されたキーをマップする値を- CompletableFutureSE でラップして返します。この操作はブロックしてはなりませんが、対応する値がすぐに使用できる場合は、完了した- CompletableFutureSE を返すことができます。- このキーのマッピングが含まれていないことをキャッシュが即座に判断できる場合 (メモリ内のキーマップなどを通じて)、 - nullを返すことができます。それ以外の場合、キャッシュされた値は- CompletableFutureSE で返され、- nullは後で決定されたキャッシュミスを示します。ネストされた- Cache.ValueWrapperは、NULL 許容のキャッシュ値を示す可能性があります。null 値がサポートされていない場合、キャッシュされた値はプレーン要素として表現されることもあります。呼び出しコードは、このメソッドによって返される結果のバリアントをすべて処理できるように準備する必要があります。- パラメーター:
- key- 関連する値が返されるキー
- 戻り値:
-  このキャッシュが指定されたキーをマップする値。CompletableFutureSE 内に含まれます。キャッシュミスが後で決定された場合は空になる可能性もあります。ストレートなnullが返された場合は、キャッシュがこのキーのマッピングが含まれていないと即座に判断されたことを意味します。CompletableFuture内に含まれるCache.ValueWrapperは、潜在的にnullであるキャッシュされた値を示します。これは、通常の CompletableFuture に含まれるnullがキャッシュミスを示す、後で決定されるシナリオでは賢明です。ただし、キャッシュがnull値の実際のキャッシュをサポートしていない場合は、余分なレベルの値の折り返しを回避してプレーン値を返すこともあります。Spring のキャッシュ処理は、こうしたすべての実装戦略に対応できます。
- 関連事項:
 
- retrievepublic <T> CompletableFutureSE<T> retrieve- (ObjectSE key, SupplierSE<CompletableFutureSE<T>> valueLoader) インターフェースからコピーされた説明:- Cacheこのキャッシュが指定されたキーをマップする値を返し、必要に応じて- valueLoaderからその値を取得します。このメソッドは、- CompletableFutureSE に基づいた、従来の「キャッシュされている場合は返す、そうでない場合は作成、キャッシュして返す」パターンの単純な代替手段を提供します。この操作はブロックしないでください。- 可能な場合、実装は、同じキーへの同時アクセスの場合に指定された - valueLoaderが 1 回だけ呼び出されるように、ロード操作が同期されることを確認する必要があります。- このメソッドでは、NULL 値は常にユーザーレベルの - null値を示します。提供された- CompletableFutureSE ハンドルは値を生成するか、例外を生成します。- valueLoaderが例外を発生させた場合、その例外は返された- CompletableFutureハンドルに伝播されます。- パラメーター:
- key- 関連する値が返されるキー
- 戻り値:
-  このキャッシュが指定されたキーをマップする値。CompletableFutureSE 内に含まれますが、nullになることはありません。提供された Future は、値を生成するか、例外を発生させることが期待されます。
- 関連事項:
 
- putインターフェースからコピーされた説明:- Cache指定された値をこのキャッシュ内の指定されたキーに関連付けます。- キャッシュに以前にこのキーのマッピングが含まれていた場合、古い値は指定された値に置き換えられます。 - 実際の登録は非同期方式または遅延方式で実行できますが、その後の検索ではエントリがまだ表示されていない可能性があります。これは、たとえばトランザクションキャッシュデコレータの場合です。 - Cache.putIfAbsent(java.lang.Object, java.lang.Object)を使用して、即時登録を保証します。- キャッシュが - CompletableFutureSE およびリアクティブインタラクションと互換性があると想定されている場合、put 操作は事実上ノンブロッキングであり、バックエンドのライトスルーは非同期で発生する必要があります。これは、- Cache.retrieve(Object)および- Cache.retrieve(Object, Supplier)をサポートするように実装および構成されたキャッシュとともに行われます。- パラメーター:
- key- 指定された値が関連付けられるキー
- value- 指定されたキーに関連付けられる値
- 関連事項:
 
- putIfAbsentインターフェースからコピーされた説明:- Cache指定された値が設定されていない場合、指定された値をこのキャッシュ内の指定されたキーと原子的に関連付けます。- これは次と同等です: 
 ただし、アクションはアトミックに実行されます。すべての初期状態の- ValueWrapper existingValue = cache.get(key); if (existingValue == null) { cache.put(key, value); } return existingValue;- CacheManager実装は、put をアトミックに実行することができるが、オペレーションは、たとえば、非アトミックな方法で、存在のチェックと後続の put との 2 つのステップで実装することもできます。詳細については、使用しているネイティブキャッシュ実装のドキュメントを参照してください。- デフォルトの実装は、上記のコードスニペットの行に沿って - Cache.get(Object)および- Cache.put(Object, Object)に委譲します。- パラメーター:
- key- 指定された値が関連付けられるキー
- value- 指定されたキーに関連付けられる値
- 戻り値:
-  このキャッシュが指定されたキー(null自体の場合もある)をマップする値、またはこの呼び出しの前にキャッシュにそのキーのマッピングが含まれていなかった場合はnullしたがって、nullを返すことは、指定されたvalueがキーに関連付けられていることを示すインジケーターです。
- 関連事項:
 
- evictインターフェースからコピーされた説明:- Cacheこのキーが存在する場合、このキャッシュからこのキーのマッピングを削除します。- 実際のエビクションは非同期方式または遅延方式で実行できますが、その後のルックアップではおそらくエントリが引き続き表示されます。これは、たとえばトランザクションキャッシュデコレータの場合です。 - Cache.evictIfPresent(java.lang.Object)を使用して、即時の削除を保証します。- キャッシュが - CompletableFutureSE およびリアクティブインタラクションと互換性があると想定されている場合、エビクト操作は事実上ノンブロッキングであり、バックエンドのライトスルーは非同期で発生する必要があります。これは、- Cache.retrieve(Object)および- Cache.retrieve(Object, Supplier)をサポートするように実装および構成されたキャッシュとともに行われます。- パラメーター:
- key- マッピングがキャッシュから削除されるキー
- 関連事項:
 
- evictIfPresentインターフェースからコピーされた説明:- Cacheこのキーが存在する場合は、このキーのマッピングを削除し、以降の検索ではキーがすぐに見えないことを期待します。- デフォルトの実装は - Cache.evict(Object)に委譲し、未決定のキーの存在について- falseを返します。キャッシュプロバイダー、特にキャッシュデコレーターは、可能な場合は直ちにエビクションを実行し(たとえば、トランザクション内で一般的にキャッシュ操作を遅延させる場合)、指定されたキーの事前の存在を確実に判断することをお勧めします。- パラメーター:
- key- マッピングがキャッシュから削除されるキー
- 戻り値:
-  キャッシュに以前にこのキーのマッピングがあることがわかっていた場合は true、ない場合はfalse(または事前の存在を判断できなかった場合)
- 関連事項:
 
- clearpublic void clear()インターフェースからコピーされた説明:- Cacheすべてのマッピングを削除してキャッシュをクリアします。- 実際の消去は、非同期または遅延方式で実行され、その後のルックアップでエントリが引き続き表示される可能性があります。これは、たとえばトランザクションキャッシュデコレータの場合です。 - Cache.invalidate()を使用して、エントリの即時削除を保証します。- キャッシュが - CompletableFutureSE およびリアクティブインタラクションと互換性があると想定されている場合、クリア操作は事実上ノンブロッキングであり、バックエンドのライトスルーは非同期で発生する必要があります。これは、- Cache.retrieve(Object)および- Cache.retrieve(Object, Supplier)をサポートするように実装および構成されたキャッシュとともに行われます。- 関連事項:
 
- invalidatepublic boolean invalidate()インターフェースからコピーされた説明:- Cacheすべてのマッピングを削除してキャッシュを無効にし、以降のルックアップではすべてのエントリがすぐに表示されないようにします。- 戻り値:
-  キャッシュにマッピングがあることがわかっている場合は true、マッピングがない場合はfalse(または、エントリの事前の存在を判別できなかった場合)
- 関連事項:
 
- toStoreValueクラスからコピーされた説明:- AbstractValueAdaptingCacheput メソッドに渡された指定のユーザー値を内部ストアの値に変換します(- nullを適応)。- オーバーライド:
-  クラス AbstractValueAdaptingCacheのtoStoreValue
- パラメーター:
- userValue- 指定されたユーザー値
- 戻り値:
- 保存する値
 
- fromStoreValueクラスからコピーされた説明:- AbstractValueAdaptingCache指定された値を内部ストアから get メソッドから返されたユーザー値に変換します(- nullを適応)。- オーバーライド:
-  クラス AbstractValueAdaptingCacheのfromStoreValue
- パラメーター:
- storeValue- ストアの値
- 戻り値:
- ユーザーに返す値