2017-11-23 4 views
0

私のSpringアプリケーションでは、org.springframework.transaction.annotation.Transactionalアノテーションでアノテートされたクラスがあります。単一クラスメソッドのスプリングディセーブルトランザクション

クラスレベル宣言から@Transactionalを削除せずに、このクラスの特定の単一メソッドのトランザクションを破棄することはできますか?その場合は、例を示してください

答えて

1

をする必要があり、これまでどのような方法からCustomExceptionを投げるクラスのコードの下に使用しますデフォルトのトランザクション処理を無効にするメソッドの属性。

例:このメソッドは、アクティブなトランザクションの内部で呼び出された場合

@Transactional(propagation=Propagation.NEVER) 
public long notInTransaction(AnythingData anythingData) throws Exception { 
    //JDBC code... 
} 

が例外をスローします。 Propagation.NOT_SUPPORTEDは現在のトランザクションを「中断」し、メソッドが非トランザクションと呼ばれることを確認します。

0

カスタムExceptionクラスを作成することでこれを行うことができます。

@Transactional(rollbackFor = { CustomException.class}) 

今、あなただけの正しい定義だから、さらに、クラスレベルの注釈へTransactional

`public @interface Transactional 

Describes transaction attributes on a method or class.` 

によるとtransactional