public interface TransactionSynchronization
AbstractReactiveTransactionManager
でサポートされています。TransactionSynchronization 実装は、Ordered
インターフェースを実装して実行順序に影響を与えることができます。Ordered
インターフェースを実装しない同期は、同期チェーンの最後に追加されます。
Spring 自体によって実行されるシステム同期は、特定の順序値を使用して、実行順序とのきめ細かいやり取りを可能にします(必要な場合)。
TransactionSynchronizationManager
, AbstractReactiveTransactionManager
修飾子と型 | フィールドと説明 |
---|---|
static int | STATUS_COMMITTED 適切なコミットの場合の完了ステータス。 |
static int | STATUS_ROLLED_BACK 適切なロールバックの場合の完了ステータス。 |
static int | STATUS_UNKNOWN ヒューリスティックな混合完了またはシステムエラーの場合の完了ステータス。 |
修飾子と型 | メソッドと説明 |
---|---|
default reactor.core.publisher.Mono<VoidSE> | afterCommit() トランザクションのコミット後に呼び出されます。 |
default reactor.core.publisher.Mono<VoidSE> | afterCompletion(int status) トランザクションのコミット / ロールバック後に呼び出されます。 |
default reactor.core.publisher.Mono<VoidSE> | beforeCommit(boolean readOnly) トランザクションのコミット前( "beforeCompletion" の前)に呼び出されます。 |
default reactor.core.publisher.Mono<VoidSE> | beforeCompletion() トランザクションのコミット / ロールバックの前に呼び出されます。 |
default reactor.core.publisher.Mono<VoidSE> | resume() この同期を再開します。 |
default reactor.core.publisher.Mono<VoidSE> | suspend() この同期を一時停止します。 |
static final int STATUS_COMMITTED
static final int STATUS_ROLLED_BACK
static final int STATUS_UNKNOWN
default reactor.core.publisher.Mono<VoidSE> suspend()
default reactor.core.publisher.Mono<VoidSE> resume()
default reactor.core.publisher.Mono<VoidSE> beforeCommit(boolean readOnly)
このコールバックは、トランザクションが実際にコミットされることを意味するものではありません。このメソッドが呼び出された後でも、ロールバックの決定が発生する可能性があります。このコールバックは、SQL ステートメントをデータベースにフラッシュするなど、コミットがまだ発生する可能性がある場合にのみ関連する作業を実行することを目的としています。
例外はコミット呼び出し元に伝播され、トランザクションのロールバックが発生することに注意してください。
readOnly
- トランザクションが読み取り専用トランザクションとして定義されているかどうか RuntimeExceptionSE
- エラーの場合 ; 呼び出し元に伝播されます (注意: ここで TransactionException サブクラスをスローしないでください! )beforeCompletion()
default reactor.core.publisher.Mono<VoidSE> beforeCompletion()
beforeCommit
が例外をスローした場合でも、このメソッドは beforeCommit
の後に呼び出されます。このコールバックにより、トランザクションの完了前にリソースを閉じることができます。
RuntimeExceptionSE
- エラーの場合 ; ログに記録されますが、伝播されません (注意: ここで TransactionException サブクラスをスローしないでください! )beforeCommit(boolean)
, afterCompletion(int)
default reactor.core.publisher.Mono<VoidSE> afterCommit()
できます。確認メッセージやメールなど、メイントランザクションが正常にコミットされた後に実行されるはずの操作をさらにコミットします。
注 : トランザクションはすでにコミットされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には PROPAGATION_REQUIRES_NEW
を使用します。
RuntimeExceptionSE
- エラーの場合 ; 呼び出し元に伝播されます (注意: ここで TransactionException サブクラスをスローしないでください! )default reactor.core.publisher.Mono<VoidSE> afterCompletion(int status)
注 : トランザクションはすでにコミットまたはロールバックされていますが、トランザクションリソースはまだアクティブでアクセス可能です。結果として、この時点でトリガーされたデータアクセスコードは元のトランザクションに「参加」し、別のトランザクションで実行する必要があることを明示的に宣言しない限り、クリーンアップを実行できるようになります。、 ここから呼び出されるトランザクション操作には PROPAGATION_REQUIRES_NEW
を使用します。
status
- STATUS_*
定数に従った完了ステータス RuntimeExceptionSE
- エラーの場合 ; ログに記録されますが、伝播されません (注意: ここで TransactionException サブクラスをスローしないでください! )STATUS_COMMITTED
, STATUS_ROLLED_BACK
, STATUS_UNKNOWN
, beforeCompletion()