クラス TransactionAwareCacheDecorator
- 実装されたすべてのインターフェース:
Cache
put(java.lang.Object, java.lang.Object)
、evict(java.lang.Object)
、clear()
操作を ( Spring の TransactionSynchronizationManager
を介して) Spring 管理のトランザクションと同期し、成功したトランザクションのコミット後のフェーズでのみ実際のキャッシュの put/evict/clear 操作を実行するキャッシュデコレーター。アクティブなトランザクションがない場合、通常どおり put(java.lang.Object, java.lang.Object)
、evict(java.lang.Object)
、clear()
操作がすぐに実行されます。 注意 : putIfAbsent(java.lang.Object, java.lang.Object)
や evictIfPresent(java.lang.Object)
などの即時操作の使用は、実行中のトランザクションのコミット後フェーズまで延期できません。トランザクション環境では注意してこれらを使用してください。
- 導入:
- 3.2
- 作成者:
- Juergen Hoeller, Stephane Nicoll, Stas Volsky
- 関連事項:
ネストされたクラスのサマリー
インターフェース org.springframework.cache.Cache から継承されたネストクラス / インターフェース
Cache.ValueRetrievalException, Cache.ValueWrapper
コンストラクターのサマリー
コンストラクター説明TransactionAwareCacheDecorator
(Cache targetCache) 指定されたターゲットキャッシュの新しい TransactionAwareCache を作成します。メソッドのサマリー
修飾子と型メソッド説明void
clear()
すべてのマッピングを削除してキャッシュをクリアします。void
このキーが存在する場合、このキャッシュからこのキーのマッピングを削除します。boolean
evictIfPresent
(ObjectSE key) このキーが存在する場合は、このキーのマッピングを削除し、以降の検索ではキーがすぐに見えないことを期待します。このキャッシュが指定されたキーをマップする値を返します。<T> T
このキャッシュが指定されたキーをマップする値を返します。一般的に、戻り値がキャストされる型を指定します。<T> T
get
(ObjectSE key, CallableSE<T> valueLoader) このキャッシュが指定されたキーをマップする値を返し、必要に応じてvalueLoader
からその値を取得します。getName()
キャッシュ名を返します。基になるネイティブキャッシュプロバイダーを返します。このキャッシュが委譲するターゲットキャッシュを返します。boolean
すべてのマッピングを削除してキャッシュを無効にし、以降のルックアップではすべてのエントリがすぐに表示されないようにします。void
指定された値をこのキャッシュ内の指定されたキーに関連付けます。putIfAbsent
(ObjectSE key, ObjectSE value) 指定された値が設定されていない場合、指定された値をこのキャッシュ内の指定されたキーと原子的に関連付けます。
コンストラクターの詳細
TransactionAwareCacheDecorator
指定されたターゲットキャッシュの新しい TransactionAwareCache を作成します。- パラメーター:
targetCache
- デコレーションするターゲットキャッシュ
メソッドの詳細
getTargetCache
このキャッシュが委譲するターゲットキャッシュを返します。getName
インターフェースからコピーされた説明:Cache
キャッシュ名を返します。getNativeCache
インターフェースからコピーされた説明:Cache
基になるネイティブキャッシュプロバイダーを返します。- 次で指定:
- インターフェース
Cache
のgetNativeCache
get
インターフェースからコピーされた説明:Cache
このキャッシュが指定されたキーをマップする値を返します。キャッシュにこのキーのマッピングが含まれていない場合は、
null
を返します。そうでない場合、キャッシュされた値(null
自体である可能性があります)がCache.ValueWrapper
で返されます。- 次で指定:
- インターフェース
Cache
のget
- パラメーター:
key
- 関連する値が返されるキー- 戻り値:
- このキャッシュが指定されたキーをマップする値。
Cache.ValueWrapper
内に含まれ、キャッシュされたnull
値も保持する場合があります。返されるストレートnull
は、キャッシュにこのキーのマッピングが含まれていないことを意味します。 - 関連事項:
get
インターフェースからコピーされた説明:Cache
このキャッシュが指定されたキーをマップする値を返します。一般的に、戻り値がキャストされる型を指定します。メモ: この
get
のバリアントでは、キャッシュされたnull
値とキャッシュエントリがまったく見つからないことを区別できません。代わりに、その目的のために標準のCache.get(Object)
バリアントを使用してください。get
インターフェースからコピーされた説明:Cache
このキャッシュが指定されたキーをマップする値を返し、必要に応じてvalueLoader
からその値を取得します。このメソッドは、従来の「キャッシュされている場合は返す、そうでない場合は作成、キャッシュして返す」パターンの単純な代替を提供します。可能な場合、実装は、同じキーへの同時アクセスの場合に指定された
valueLoader
が 1 回だけ呼び出されるように、ロード操作が同期されることを確認する必要があります。valueLoader
が例外をスローした場合、Cache.ValueRetrievalException
にラップされますput
インターフェースからコピーされた説明:Cache
指定された値をこのキャッシュ内の指定されたキーに関連付けます。キャッシュに以前にこのキーのマッピングが含まれていた場合、古い値は指定された値に置き換えられます。
実際の登録は非同期方式または遅延方式で実行できますが、その後の検索ではエントリがまだ表示されていない可能性があります。これは、たとえばトランザクションキャッシュデコレータの場合です。
Cache.putIfAbsent(java.lang.Object, java.lang.Object)
を使用して、即時登録を保証します。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)
に委譲します。- 次で指定:
- インターフェース
Cache
のputIfAbsent
- パラメーター:
key
- 指定された値が関連付けられるキーvalue
- 指定されたキーに関連付けられる値- 戻り値:
- このキャッシュが指定されたキー(
null
自体の場合もある)をマップする値、またはこの呼び出しの前にキャッシュにそのキーのマッピングが含まれていなかった場合はnull
したがって、null
を返すことは、指定されたvalue
がキーに関連付けられていることを示すインジケーターです。 - 関連事項:
evict
インターフェースからコピーされた説明:Cache
このキーが存在する場合、このキャッシュからこのキーのマッピングを削除します。実際のエビクションは非同期方式または遅延方式で実行できますが、その後のルックアップではおそらくエントリが引き続き表示されます。これは、たとえばトランザクションキャッシュデコレータの場合です。
Cache.evictIfPresent(java.lang.Object)
を使用して、即時の削除を保証します。evictIfPresent
インターフェースからコピーされた説明:Cache
このキーが存在する場合は、このキーのマッピングを削除し、以降の検索ではキーがすぐに見えないことを期待します。デフォルトの実装は
Cache.evict(Object)
に委譲し、未決定のキーの存在についてfalse
を返します。キャッシュプロバイダー、特にキャッシュデコレーターは、可能な場合は直ちにエビクションを実行し(たとえば、トランザクション内で一般的にキャッシュ操作を遅延させる場合)、指定されたキーの事前の存在を確実に判断することをお勧めします。- 次で指定:
- インターフェース
Cache
のevictIfPresent
- パラメーター:
key
- マッピングがキャッシュから削除されるキー- 戻り値:
- キャッシュに以前にこのキーのマッピングがあることがわかっていた場合は
true
、ない場合はfalse
(または事前の存在を判断できなかった場合) - 関連事項:
clear
public void clear()インターフェースからコピーされた説明:Cache
すべてのマッピングを削除してキャッシュをクリアします。実際の消去は、非同期または遅延方式で実行され、その後のルックアップでエントリが引き続き表示される可能性があります。これは、たとえばトランザクションキャッシュデコレータの場合です。
Cache.invalidate()
を使用して、エントリの即時削除を保証します。invalidate
public boolean invalidate()インターフェースからコピーされた説明:Cache
すべてのマッピングを削除してキャッシュを無効にし、以降のルックアップではすべてのエントリがすぐに表示されないようにします。- 次で指定:
- インターフェース
Cache
のinvalidate
- 戻り値:
- キャッシュにマッピングがあることがわかっている場合は
true
、マッピングがない場合はfalse
(または、エントリの事前の存在を判別できなかった場合) - 関連事項: