私のSpringアプリケーションでは、org.springframework.transaction.annotation.Transactional
アノテーションでアノテートされたクラスがあります。単一クラスメソッドのスプリングディセーブルトランザクション
クラスレベル宣言から@Transactional
を削除せずに、このクラスの特定の単一メソッドのトランザクションを破棄することはできますか?その場合は、例を示してください
私のSpringアプリケーションでは、org.springframework.transaction.annotation.Transactional
アノテーションでアノテートされたクラスがあります。単一クラスメソッドのスプリングディセーブルトランザクション
クラスレベル宣言から@Transactional
を削除せずに、このクラスの特定の単一メソッドのトランザクションを破棄することはできますか?その場合は、例を示してください
をする必要があり、これまでどのような方法からCustomException
を投げるクラスのコードの下に使用しますデフォルトのトランザクション処理を無効にするメソッドの属性。
例:このメソッドは、アクティブなトランザクションの内部で呼び出された場合
@Transactional(propagation=Propagation.NEVER)
public long notInTransaction(AnythingData anythingData) throws Exception {
//JDBC code...
}
が例外をスローします。 Propagation.NOT_SUPPORTED
は現在のトランザクションを「中断」し、メソッドが非トランザクションと呼ばれることを確認します。
カスタムExceptionクラスを作成することでこれを行うことができます。
@Transactional(rollbackFor = { CustomException.class})
今、あなただけの正しい定義だから、さらに、クラスレベルの注釈へTransactional
`public @interface Transactional
Describes transaction attributes on a method or class.`
によるとtransactional