インターフェース TransactionManagementConfigurer


public interface TransactionManagementConfigurer
@EnableTransactionManagement でアノテーションされた @Configuration クラスが、アノテーション駆動型のトランザクション管理に使用するデフォルトの PlatformTransactionManager Bean(または ReactiveTransactionManager Bean)を明示的に指定したい(または指定する必要がある)場合に実装されるインターフェースです。これが必要な理由の 1 つは、コンテナー内に 2 つの PlatformTransactionManager ビーン (または 2 つの ReactiveTransactionManager Bean) が存在する場合です。

一般的な例とコンテキストについては、@EnableTransactionManagement を参照してください。詳細な手順については、annotationDrivenTransactionManager() を参照してください。

型別ルックアップの明確化の場合、このインターフェースを実装するための代替アプローチは、問題のある PlatformTransactionManager@Bean メソッド(または ReactiveTransactionManager@Bean メソッド)の 1 つを @Primary としてマークすることです。これは、TransactionManager Bean の早期初期化につながらないため、一般的にも好まれます。

導入:
3.1
作成者:
Chris Beams
関連事項:
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    アノテーション駆動型データベースのトランザクション管理に使用するデフォルトのトランザクションマネージャー Bean を返します。
  • メソッドの詳細

    • annotationDrivenTransactionManager

      TransactionManager annotationDrivenTransactionManager()
      アノテーション駆動型データベースのトランザクション管理に使用する、つまり @Transactional メソッドを処理するときに使用するデフォルトのトランザクションマネージャー Bean を返します。

      この方法を実装するには、2 つの基本的な方法があります。

      1. Implement the method and annotate it with@Bean

      この場合、実装する @Configuration クラスはこのメソッドを実装し、@Bean でマークを付け、メソッド本体内で直接トランザクションマネージャーを構成して返します。
       @Bean
       @Override
       public PlatformTransactionManager annotationDrivenTransactionManager() {
           return new DataSourceTransactionManager(dataSource());
       }

      2. Implement the method without@Beanand delegate to another existing@Beanmethod

       @Bean
       public PlatformTransactionManager txManager() {
           return new DataSourceTransactionManager(dataSource());
       }
      
       @Override
       public PlatformTransactionManager annotationDrivenTransactionManager() {
           return txManager(); // reference the existing @Bean method above
       }
      アプローチ #2 を採用する場合、@Bean でマークされているメソッドが 1 つだけであることを確認してください。

      ほとんどの PlatformTransactionManager 実装は InitializingBean や BeanFactoryAware などの Spring ライフサイクルコールバックを利用するため、どちらのシナリオ #1 または #2 でも、PlatformTransactionManager インスタンスがコンテナー内で Spring Bean として管理されることが重要です。ReactiveTransactionManager Bean にも同じガイドラインが適用されることに注意してください。

      戻り値:
      PlatformTransactionManager または ReactiveTransactionManager 実装