繁体   English   中英

如何为多个数据库配置事务管理器

[英]how configure transactionmanager for multiple databases

我有一个事务管理器,每个数据库都有多个实体管理器,但是如果有任何失败,它不会访问任何,我该如何解决这个问题?

@Primary
@Bean
    public ChainedTransactionManager transactionManager( ) {
        return new ChainedTransactionManager(
        new JpaTransactionManager(emR01.getEntityManagerFactory()), new
          JpaTransactionManager(emR02.getEntityManagerFactory()), new
          JpaTransactionManager(emR03.getEntityManagerFactory()), new
          JpaTransactionManager(emR04.getEntityManagerFactory()), new
          JpaTransactionManager(emR05.getEntityManagerFactory()), new
          JpaTransactionManager(emR06.getEntityManagerFactory()), new
          JpaTransactionManager(emR07.getEntityManagerFactory()), new
          JpaTransactionManager(emR08.getEntityManagerFactory()), new
          JpaTransactionManager(emR09.getEntityManagerFactory())
         
                );
    }
    

您可以在循环调用以下代码的同时创建多个事务管理器,并为每个人注册一个唯一的 bean

在运行时

public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {

    JpaTransactionManager transactionManager
            = new JpaTransactionManager();
    transactionManager.setEntityManagerFactory(entityManagerFactory);
    return transactionManager;
}

bean 注册运行时

AutowireCapableBeanFactory factory = context.getAutowireCapableBeanFactory();

BeanDefinitionRegistry 注册中心 = (BeanDefinitionRegistry) 工厂; registry.removeBeanDefinition("txn01"); context.registerBean("txn01", PlatformTransactionManager.class, () -> transactionManager());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM