public interface TransactionManagementConfigurerEnableTransactionManagement でアノテーションされた @Configuration クラスが、アノテーション駆動型のトランザクション管理に使用するデフォルトの PlatformTransactionManager Bean(または ReactiveTransactionManager Bean)を明示的に指定したい(または指定する必要がある)場合に実装されるインターフェースです。これが必要な理由の 1 つは、コンテナー内に 2 つの PlatformTransactionManager ビーン (または 2 つの ReactiveTransactionManager Bean) が存在する場合です。 一般的な例とコンテキストについては、@EnableTransactionManagement を参照してください。詳細な手順については、annotationDrivenTransactionManager() を参照してください。
 型別ルックアップの明確化の場合、このインターフェースを実装するための代替アプローチは、問題のある PlatformTransactionManager @Bean メソッド(または ReactiveTransactionManager @Bean メソッド)の 1 つを @Primary としてマークすることです。これは、TransactionManager Bean の早期初期化につながらないため、一般的にも好まれます。
EnableTransactionManagement, Primary, PlatformTransactionManager, ReactiveTransactionManager| 修飾子と型 | メソッドと説明 | 
|---|---|
| TransactionManager | annotationDrivenTransactionManager() アノテーション駆動型データベースのトランザクション管理に使用するデフォルトのトランザクションマネージャー Bean を返します。 | 
TransactionManager annotationDrivenTransactionManager()
@Transactional メソッドを処理するときに使用するデフォルトのトランザクションマネージャー Bean を返します。この方法を実装するには、2 つの基本的な方法があります。
@Bean でアノテーションを付けます@Configuration クラスはこのメソッドを実装し、@Bean でマークを付け、メソッド本体内で直接トランザクションマネージャーを構成して返します。
 @Bean
 @Override
 public PlatformTransactionManager annotationDrivenTransactionManager() {
     return new DataSourceTransactionManager(dataSource());
 }@Bean なしでメソッドを実装し、別の既存の @Bean メソッドに委譲する 
 @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 にも同じガイドラインが適用されることに注意してください。