如何在Spring中配置事务管理以使用2个不同的数据库?

我有2个数据库(MySql和HSQLDB)。我配置了2个数据源和2个EntityManagerFactory bean。我还可以配置2个对应的JpaTransactionManager bean。

但是我不知道如何指定应使用其中的哪一个来管理具体服务类的事务。我想为此使用@Transactional注释,但实际上我只能指定txManagers之一:

<tx:annotation-driven transaction-manager="manager"/>

这种情况下的出路是什么?

回答:

声明你的<tx:annotation-driven>无事务管理器属性,为事务管理器声明限定符,如下所示:

<bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">

<property name="entityManagerFactory" ref="entityManagerFactory" />

<qualifier value="txManager1"/>

</bean>

使用@Transactional中的此限定符作为值来选择事务管理器之一:

@Transactional("txManager1")

或者,具有更多属性:

@Transactional(value = "txManager1", readOnly = true)   

以上是 如何在Spring中配置事务管理以使用2个不同的数据库? 的全部内容, 来源链接: utcz.com/qa/430966.html

回到顶部