クラス ReactiveResourceSynchronization<O,K>
- 型パラメーター:
O- リソースホルダーの型K- リソースキー型
- 実装されているすべてのインターフェース:
TransactionSynchronization
TransactionSynchronizationManager を介してバインドされたリソースオブジェクトを管理する TransactionSynchronization 実装。- 導入:
- 5.2
- 作成者:
- Mark Paluch, Juergen Hoeller
フィールドのサマリー
インターフェース org.springframework.transaction.reactive.TransactionSynchronization から継承されたフィールド
STATUS_COMMITTED, STATUS_ROLLED_BACK, STATUS_UNKNOWNコンストラクターの概要
コンストラクターコンストラクター説明ReactiveResourceSynchronization(O resourceObject, K resourceKey, TransactionSynchronizationManager synchronizationManager) 指定されたホルダーの新しい ReactiveResourceSynchronization を作成します。メソッドのサマリー
修飾子と型メソッド説明reactor.core.publisher.Mono<VoidSE>トランザクションのコミット後に呼び出されます。reactor.core.publisher.Mono<VoidSE>afterCompletion(int status) トランザクションのコミット / ロールバック後に呼び出されます。reactor.core.publisher.Mono<VoidSE>beforeCommit(boolean readOnly) トランザクションのコミット前( "beforeCompletion" の前)に呼び出されます。reactor.core.publisher.Mono<VoidSE>トランザクションのコミット / ロールバックの前に呼び出されます。protected reactor.core.publisher.Mono<VoidSE>cleanupResource(O resourceHolder, K resourceKey, boolean committed) 指定されたリソース(スレッドにバインドされたまま)に対してクリーンアップを実行します。protected reactor.core.publisher.Mono<VoidSE>processResourceAfterCommit(O resourceHolder) 指定されたリソースホルダーのコミット後のコールバック。protected reactor.core.publisher.Mono<VoidSE>releaseResource(O resourceHolder, K resourceKey) 指定されたリソースを解放します(スレッドからバインド解除された後)。reactor.core.publisher.Mono<VoidSE>resume()この同期を再開します。protected booleanshouldReleaseAfterCompletion(O resourceHolder) トランザクションの完了後にこの所有者のリソースを解放する必要があるかどうかを返します(true)。protected booleanこの所有者のリソースをトランザクション完了前(true)に解放するか、トランザクション完了後(false)に解放するかを返します。protected booleanこのホルダーが完了時にバインド解除される(または、トランザクション後にスレッドにバインドされたままにする必要がある)かどうかを返します。reactor.core.publisher.Mono<VoidSE>suspend()この同期を一時停止します。
コンストラクターの詳細
ReactiveResourceSynchronization
public ReactiveResourceSynchronization(O resourceObject, K resourceKey, TransactionSynchronizationManager synchronizationManager) 指定されたホルダーの新しい ReactiveResourceSynchronization を作成します。- パラメーター:
resourceObject- 管理するリソースオブジェクトresourceKey- リソースオブジェクトをバインドするキーsynchronizationManager- 現在のトランザクションにバインドされた同期マネージャー- 関連事項:
メソッドの詳細
suspend
インターフェースからコピーされた説明:TransactionSynchronizationこの同期を一時停止します。いずれかを管理している場合、TransactionSynchronizationManager からリソースのバインドを解除することになっています。resume
インターフェースからコピーされた説明:TransactionSynchronizationこの同期を再開します。リソースを管理している場合、リソースを TransactionSynchronizationManager に再バインドするとします。beforeCommit
インターフェースからコピーされた説明:TransactionSynchronizationトランザクションのコミット前( "beforeCompletion" の前)に呼び出されます。このコールバックは、トランザクションが実際にコミットされることを意味するものではありません。このメソッドが呼び出された後でも、ロールバックの決定が発生する可能性があります。このコールバックは、SQL ステートメントをデータベースにフラッシュするなど、コミットがまだ発生する可能性がある場合にのみ関連する作業を実行することを目的としています。
例外はコミット呼び出し元に伝播され、トランザクションのロールバックが発生することに注意してください。
- 次で指定:
- インターフェース
TransactionSynchronizationのbeforeCommit - パラメーター:
readOnly- トランザクションが読み取り専用トランザクションとして定義されているかどうか- 関連事項:
beforeCompletion
インターフェースからコピーされた説明:TransactionSynchronizationトランザクションのコミット / ロールバックの前に呼び出されます。トランザクションの完了前にリソースのクリーンアップを実行できます。beforeCommitが例外をスローした場合でも、このメソッドはbeforeCommitの後に呼び出されます。このコールバックにより、トランザクションの完了前にリソースを閉じることができます。afterCommit
インターフェースからコピーされた説明:TransactionSynchronizationトランザクションのコミット後に呼び出されます。メイントランザクションが正常にコミットされた直後に、さらに操作を実行できます。たとえば、確認メッセージやメールなど、メイントランザクションのコミットが成功した後に続くはずの追加操作をコミットできます。
注 : トランザクションはすでにコミットされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には
PROPAGATION_REQUIRES_NEWを使用します。- 次で指定:
- インターフェース
TransactionSynchronizationのafterCommit
afterCompletion
インターフェースからコピーされた説明:TransactionSynchronizationトランザクションのコミット / ロールバック後に呼び出されます。トランザクションの完了後にリソースのクリーンアップを実行できます。注 : トランザクションはすでにコミットまたはロールバックされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には
PROPAGATION_REQUIRES_NEWを使用します。- 次で指定:
- インターフェース
TransactionSynchronizationのafterCompletion - パラメーター:
status-STATUS_*定数に従った完了ステータス- 関連事項:
shouldUnbindAtCompletion
protected boolean shouldUnbindAtCompletion()このホルダーが完了時にバインド解除される(または、トランザクション後にスレッドにバインドされたままにする必要がある)かどうかを返します。デフォルトの実装は
trueを返します。shouldReleaseBeforeCompletion
protected boolean shouldReleaseBeforeCompletion()この所有者のリソースをトランザクション完了前(true)に解放するか、トランザクション完了後(false)に解放するかを返します。リソースが解放されるのは、それらがスレッド(
shouldUnbindAtCompletion())からバインド解除されている場合のみであることに注意してください。デフォルトの実装は
trueを返します。shouldReleaseAfterCompletion
トランザクションの完了後にこの所有者のリソースを解放する必要があるかどうかを返します(true)。デフォルトの実装は
!shouldReleaseBeforeCompletion()を返し、完了前に試行が行われなかった場合は完了後に解放します。processResourceAfterCommit
指定されたリソースホルダーのコミット後のコールバック。リソースがまだ解放されていない場合にのみ呼び出されます(shouldReleaseBeforeCompletion())。- パラメーター:
resourceHolder- 処理するリソースホルダー
releaseResource
指定されたリソースを解放します(スレッドからバインド解除された後)。- パラメーター:
resourceHolder- 処理するリソースホルダーresourceKey- リソースオブジェクトがバインドされたキー
cleanupResource
protected reactor.core.publisher.Mono<VoidSE> cleanupResource(O resourceHolder, K resourceKey, boolean committed) 指定されたリソース(スレッドにバインドされたまま)に対してクリーンアップを実行します。- パラメーター:
resourceHolder- 処理するリソースホルダーresourceKey- リソースオブジェクトがバインドされたキーcommitted- トランザクションがコミット(true)したか、ロールバックしたか (false)