クラス CaffeineCache
- 実装されているすべてのインターフェース:
Cache
Cache インスタンスの上にある Spring Cache アダプターの実装。CaffeineCache(String, AsyncCache, boolean) コンストラクターを介して提供される場合、Caffeine の AsyncCache を通じて retrieve(Object) および retrieve(Object, Supplier) 操作をサポートします。
Spring Framework 6.1 以降では Caffeine 3.0 以降が必要です。
- 導入:
- 4.3
- 作成者:
- Ben Manes, Juergen Hoeller, Stephane Nicoll
- 関連事項:
ネストされたクラスの要約
インターフェース org.springframework.cache.Cache から継承されたネストクラス / インターフェース
Cache.ValueRetrievalException, Cache.ValueWrapperコンストラクターの概要
コンストラクターコンストラクター説明CaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE, ObjectSE> cache, boolean allowNullValues) 使用する指定された名前と指定された内部AsyncCacheでCaffeineCacheインスタンスを作成します。CaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache) 使用する指定された名前と指定された内部CacheでCaffeineCacheインスタンスを作成します。CaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache, boolean allowNullValues) 使用する指定された名前と指定された内部CacheでCaffeineCacheインスタンスを作成します。メソッドのサマリー
修飾子と型メソッド説明voidclear()すべてのマッピングを削除してキャッシュをクリアします。voidこのキーが存在する場合、このキャッシュからこのキーのマッピングを削除します。booleanevictIfPresent(ObjectSE key) このキーが存在する場合は、このキーのマッピングを削除し、以降の検索ではキーがすぐに見えないことを期待します。<T> Tget(ObjectSE key, CallableSE<T> valueLoader) このキャッシュが指定されたキーをマップする値を返し、必要に応じてvalueLoaderからその値を取得します。内部 Caffeine AsyncCache を返します。final StringSEgetName()キャッシュ名を返します。内部 Caffeine キャッシュ (おそらくgetAsyncCache()上のアダプター) を返します。booleanすべてのマッピングを削除してキャッシュを無効にし、以降のルックアップではすべてのエントリがすぐに表示されないようにします。protected ObjectSE基になるストアで実際のルックアップを実行します。void指定された値をこのキャッシュ内の指定されたキーに関連付けます。putIfAbsent(ObjectSE key, ObjectSE value) 指定された値が設定されていない場合、指定された値をこのキャッシュ内の指定されたキーと原子的に関連付けます。このキャッシュが指定されたキーをマップする値をCompletableFutureSE でラップして返します。<T> CompletableFutureSE<T>retrieve(ObjectSE key, SupplierSE<CompletableFutureSE<T>> valueLoader) このキャッシュが指定されたキーをマップする値を返し、必要に応じてvalueLoaderからその値を取得します。クラス org.springframework.cache.support.AbstractValueAdaptingCache から継承されたメソッド
fromStoreValue, get, get, isAllowNullValues, toStoreValue, toValueWrapper
コンストラクターの詳細
CaffeineCache
public CaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache) 使用する指定された名前と指定された内部CacheでCaffeineCacheインスタンスを作成します。- パラメーター:
name- キャッシュの名前cache- バッキング Caffeine キャッシュインスタンス
CaffeineCache
public CaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.Cache<ObjectSE, ObjectSE> cache, boolean allowNullValues) 使用する指定された名前と指定された内部CacheでCaffeineCacheインスタンスを作成します。- パラメーター:
name- キャッシュの名前cache- バッキング Caffeine キャッシュインスタンスallowNullValues- このキャッシュのnull値を受け入れて変換するかどうか
CaffeineCache
public CaffeineCache(StringSE name, com.github.benmanes.caffeine.cache.AsyncCache<ObjectSE, ObjectSE> cache, boolean allowNullValues) 使用する指定された名前と指定された内部AsyncCacheでCaffeineCacheインスタンスを作成します。- パラメーター:
name- キャッシュの名前cache- バッキング Caffeine AsyncCache インスタンスallowNullValues- このキャッシュのnull値を受け入れて変換するかどうか- 導入:
- 6.1
メソッドの詳細
getName
インターフェースからコピーされた説明:Cacheキャッシュ名を返します。getNativeCache
内部 Caffeine キャッシュ (おそらくgetAsyncCache()上のアダプター) を返します。getAsyncCache
内部 Caffeine AsyncCache を返します。- 例外:
IllegalStateExceptionSE- AsyncCache が利用できない場合- 導入:
- 6.1
- 関連事項:
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 のキャッシュ処理は、こうしたすべての実装戦略に対応できます。 - 関連事項:
retrieve
public <T> CompletableFutureSE<T> retrieve(ObjectSE key, SupplierSE<CompletableFutureSE<T>> valueLoader) インターフェースからコピーされた説明:Cacheこのキャッシュが指定されたキーをマップする値を返し、必要に応じてvalueLoaderからその値を取得します。このメソッドは、CompletableFutureSE に基づいた、従来の「キャッシュされている場合は返す、そうでない場合は作成、キャッシュして返す」パターンの単純な代替手段を提供します。この操作はブロックしないでください。可能な場合、実装は、同じキーへの同時アクセスの場合に指定された
valueLoaderが 1 回だけ呼び出されるように、ロード操作が同期されることを確認する必要があります。このメソッドでは、NULL 値は常にユーザーレベルの
null値を示します。提供されたCompletableFutureSE ハンドルは値を生成するか、例外を生成します。valueLoaderが例外を発生させた場合、その例外は返されたCompletableFutureハンドルに伝播されます。- パラメーター:
key- 関連する値が返されるキー- 戻り値:
- このキャッシュが指定されたキーをマップする値。
CompletableFutureSE 内に含まれますが、nullになることはありません。提供された Future は、値を生成するか、例外を発生させることが期待されます。 - 関連事項:
lookup
クラスからコピーされた説明:AbstractValueAdaptingCache基になるストアで実際のルックアップを実行します。- 次で指定:
- クラス
AbstractValueAdaptingCacheのlookup - パラメーター:
key- 関連する値が返されるキー- 戻り値:
- キーの生のストア値、ない場合は
null
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(または事前の存在を判断できなかった場合) - 関連事項:
clear
public void clear()インターフェースからコピーされた説明:Cacheすべてのマッピングを削除してキャッシュをクリアします。実際の消去は、非同期または遅延方式で実行され、その後のルックアップでエントリが引き続き表示される可能性があります。これは、たとえばトランザクションキャッシュデコレータの場合です。
Cache.invalidate()を使用して、エントリの即時削除を保証します。キャッシュが
CompletableFutureSE およびリアクティブインタラクションと互換性があると想定されている場合、クリア操作は事実上ノンブロッキングであり、バックエンドのライトスルーは非同期で発生する必要があります。これは、Cache.retrieve(Object)およびCache.retrieve(Object, Supplier)をサポートするように実装および構成されたキャッシュとともに行われます。- 関連事項:
invalidate
public boolean invalidate()インターフェースからコピーされた説明:Cacheすべてのマッピングを削除してキャッシュを無効にし、以降のルックアップではすべてのエントリがすぐに表示されないようにします。- 戻り値:
- キャッシュにマッピングがあることがわかっている場合は
true、マッピングがない場合はfalse(または、エントリの事前の存在を判別できなかった場合) - 関連事項: