[英]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.