クラス TransactionSynchronizationManager
上書きせずにキーごとに 1 つのリソースをサポートします。つまり、同じキーに新しいリソースを設定する前にリソースを削除する必要があります。同期がアクティブな場合、トランザクション同期のリストをサポートします。
 リソース管理コードは、getResource を介して、データベース接続などのコンテキストにバインドされたリソースをチェックする必要があります。通常、このようなコードは、リソースを作業単位にバインドすることは想定されていません。これは、トランザクションマネージャーの責任です。さらに別のオプションとして、トランザクション同期がアクティブな場合は、最初の使用時に遅延バインドして、任意の数のリソースにまたがるトランザクションを実行することもできます。
 トランザクションの同期は、initSynchronization() および clearSynchronization() を介してトランザクションマネージャーによってアクティブ化および非アクティブ化する必要があります。これは AbstractReactiveTransactionManager によって自動的にサポートされるため、すべての標準 Spring トランザクションマネージャーによってサポートされます。
 リソース管理コードは、このマネージャーがアクティブな場合にのみ同期を登録する必要があります。これは、isSynchronizationActive() を介して確認できます。それ以外の場合は、すぐにリソースのクリーンアップを実行する必要があります。トランザクションの同期がアクティブでない場合、現在のトランザクションがないか、トランザクションマネージャーがトランザクションの同期をサポートしていません。
たとえば、同期は、特定の接続ファクトリのデータベース接続など、トランザクション内で常に同じリソースを返すために使用されます。
- 導入:
- 5.2
- 作成者:
- Mark Paluch, Juergen Hoeller
- 関連事項:
- コンストラクターの概要コンストラクター
- メソッドのサマリー修飾子と型メソッド説明- void- bindResource- (ObjectSE key, ObjectSE value) 指定されたキーの指定されたリソースを現在のコンテキストにバインドします。- void- clear()トランザクションの同期状態全体をクリアします。登録された同期とさまざまなトランザクション特性。- void現在のコンテキストのトランザクション同期を非アクティブ化します。- static reactor.core.publisher.Mono<TransactionSynchronizationManager>現在のトランザクションコンテキストに関連付けられている- TransactionSynchronizationManagerを取得します。存在する場合、現在のトランザクションの分離レベルを返します。現在のトランザクションの名前、または何も設定されていない場合は- nullを返します。- getResource- (ObjectSE key) 現在のコンテキストにバインドされている指定されたキーのリソースを取得します。現在のコンテキストに登録されているすべての同期の変更不可能なスナップショットリストを返します。- boolean- hasResource- (ObjectSE key) 現在のコンテキストにバインドされている指定されたキーのリソースがあるかどうかを確認します。- void現在のコンテキストのトランザクション同期をアクティブにします。- boolean現在アクティブな実際のトランザクションがあるかどうかを返します。- boolean現在のトランザクションが読み取り専用としてマークされているかどうかを返します。- boolean現在のコンテキストでトランザクション同期がアクティブな場合に戻ります。- void- registerSynchronization- (TransactionSynchronization synchronization) 現在のコンテキストの新しいトランザクション同期を登録します。- void- setActualTransactionActive- (boolean active) 現在アクティブな実際のトランザクションがあるかどうかを公開します。- void- setCurrentTransactionIsolationLevel- (IntegerSE isolationLevel) 現在のトランザクションの分離レベルを公開します。- void存在する場合、現在のトランザクションの名前を公開します。- void- setCurrentTransactionReadOnly- (boolean readOnly) 現在のトランザクションの読み取り専用フラグを公開します。- unbindResource- (ObjectSE key) 現在のコンテキストから特定のキーのリソースをバインド解除します。現在のコンテキストから特定のキーのリソースをバインド解除します。
- コンストラクターの詳細- TransactionSynchronizationManager
 
- メソッドの詳細- forCurrentTransactionpublic static reactor.core.publisher.Mono<TransactionSynchronizationManager> forCurrentTransaction()現在のトランザクションコンテキストに関連付けられている- TransactionSynchronizationManagerを取得します。- 主に、リソースまたは同期をバインドするコードを対象としています。 - 例外:
- NoTransactionException- トランザクション情報が見つからない場合 — たとえば、メソッドがマネージドトランザクションの外部で呼び出されたため
 
- hasResource現在のコンテキストにバインドされている指定されたキーのリソースがあるかどうかを確認します。- パラメーター:
- key- チェックするキー (通常、リソースファクトリ)
- 戻り値:
- 現在のコンテキストにバインドされた値がある場合
 
- getResource現在のコンテキストにバインドされている指定されたキーのリソースを取得します。- パラメーター:
- key- チェックするキー (通常、リソースファクトリ)
- 戻り値:
-  現在のコンテキスト (通常はアクティブなリソースオブジェクト) にバインドされた値、またはない場合は null
 
- bindResource指定されたキーの指定されたリソースを現在のコンテキストにバインドします。- パラメーター:
- key- 値をバインドするキー (通常、リソースファクトリ)
- value- バインドする値 (通常、アクティブなリソースオブジェクト)
- 例外:
- IllegalStateExceptionSE- コンテキストにバインドされた値がすでにある場合
 
- unbindResource現在のコンテキストから特定のキーのリソースをバインド解除します。- パラメーター:
- key- バインドを解除するキー (通常、リソースファクトリ)
- 戻り値:
- 以前にバインドされた値 (通常、アクティブなリソースオブジェクト)
- 例外:
- IllegalStateExceptionSE- コンテキストにバインドされた値がない場合
 
- unbindResourceIfPossible現在のコンテキストから特定のキーのリソースをバインド解除します。- パラメーター:
- key- バインドを解除するキー (通常、リソースファクトリ)
- 戻り値:
-  以前にバインドされた値、またはバインドされていない場合は null
 
- isSynchronizationActivepublic boolean isSynchronizationActive()現在のコンテキストでトランザクション同期がアクティブな場合に戻ります。不要なインスタンスの作成を避けるために、登録前に呼び出すことができます。
- initSynchronization現在のコンテキストのトランザクション同期をアクティブにします。トランザクション開始時にトランザクションマネージャーによって呼び出されます。- 例外:
- IllegalStateExceptionSE- 同期がすでにアクティブな場合
 
- registerSynchronizationpublic void registerSynchronization- (TransactionSynchronization synchronization) throws IllegalStateExceptionSE 現在のコンテキストの新しいトランザクション同期を登録します。通常、リソース管理コードによって呼び出されます。- 同期により - Orderedインターフェースを実装できることに注意してください。それらは、オーダー値に応じた順序で実行されます(ある場合)。- パラメーター:
- synchronization- 登録する同期オブジェクト
- 例外:
- IllegalStateExceptionSE- トランザクション同期がアクティブでない場合
- 関連事項:
 
- getSynchronizations現在のコンテキストに登録されているすべての同期の変更不可能なスナップショットリストを返します。- 戻り値:
- TransactionSynchronization インスタンスの変更不可能なリスト
- 例外:
- IllegalStateExceptionSE- 同期がアクティブでない場合
- 関連事項:
 
- clearSynchronization現在のコンテキストのトランザクション同期を非アクティブ化します。トランザクションのクリーンアップ時にトランザクションマネージャーによって呼び出されます。- 例外:
- IllegalStateExceptionSE- 同期がアクティブでない場合
 
- setCurrentTransactionName存在する場合、現在のトランザクションの名前を公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- name- トランザクションの名前、またはそれをリセットする- null
- 関連事項:
 
- getCurrentTransactionName現在のトランザクションの名前、または何も設定されていない場合は- nullを返します。特定の名前付きトランザクションのフェッチ戦略を最適化するなど、ユースケースごとの最適化のためにリソース管理コードによって呼び出されます。
- setCurrentTransactionReadOnlypublic void setCurrentTransactionReadOnly- (boolean readOnly) 現在のトランザクションの読み取り専用フラグを公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- readOnly- 現在のトランザクションを読み取り専用としてマークする- true。このような読み取り専用マーカーをリセットする- false
- 関連事項:
 
- isCurrentTransactionReadOnlypublic boolean isCurrentTransactionReadOnly()現在のトランザクションが読み取り専用としてマークされているかどうかを返します。新しく作成されたリソースを準備するときに、リソース管理コードによって呼び出されます。- トランザクションの同期は、コミット時の変更検出を抑制することができるように、 - beforeCommitコールバックの引数として読み取り専用フラグを受け取ることに注意してください。このメソッドは、以前の読み取り専用チェックに使用することを目的としています。
- setCurrentTransactionIsolationLevel現在のトランザクションの分離レベルを公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- isolationLevel- R2DBC 接続定数(対応する Spring TransactionDefinition 定数に相当)に応じて公開する分離レベル、またはそれをリセットする- null
- 関連事項:
 
- getCurrentTransactionIsolationLevel存在する場合、現在のトランザクションの分離レベルを返します。新しく作成されたリソース(R2DBC 接続など)を準備するときに、リソース管理コードによって呼び出されます。- 戻り値:
- R2DBC 接続定数(対応する Spring TransactionDefinition 定数に相当)に応じた現在公開されている分離レベル、または存在しない場合は null
- 関連事項:
 
- setActualTransactionActivepublic void setActualTransactionActive- (boolean active) 現在アクティブな実際のトランザクションがあるかどうかを公開します。トランザクションの開始時およびクリーンアップ時にトランザクションマネージャーによって呼び出されます。- パラメーター:
- active- 現在のコンテキストを実際のトランザクションに関連付けられているものとしてマークする- true。そのマーカーをリセットする- false
 
- isActualTransactionActivepublic boolean isActualTransactionActive()現在アクティブな実際のトランザクションがあるかどうかを返します。これは、現在のコンテキストがアクティブなトランザクション同期だけでなく実際のトランザクションに関連付けられているかどうかを示します。- アクティブなトランザクション同期 (バッキングリソーストランザクションの有無にかかわらず、PROPAGATION_SUPPORTS 上でも) とアクティブな実際のトランザクション (バッキングリソーストランザクションあり、PROPAGATION_REQUIRED、PROPAGATION_REQUIRES_NEW など) を区別するリソース管理コードによって呼び出されます。 
- clearpublic void clear()トランザクションの同期状態全体をクリアします。登録された同期とさまざまなトランザクション特性。