我们已配置多个交易管理器:
<tx:annotation-driven transaction-manager="transactionManager1" />
<tx:annotation-driven transaction-manager="transactionManager2" />
<tx:annotation-driven transaction-manager="transactionManager3" />
<bean id="transactionManage1"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory1" />
</bean>
<bean id="transactionManager2"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory2" />
</bean>
<bean id="transactionManage3"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory3" />
</bean>
但是,我没有在服务类中看到@Transactional注释中指定的事务管理器的名称。我想知道将使用哪个事务管理器?代码正在运行,看起来它使用了第一个 - &#34; transactionManager1&#34;默认情况下。我想念一下吗?
答案 0 :(得分:0)
我想知道将使用哪个事务管理器?
那里的行为可能是未定义的,但它最有可能使用上下文中首先出现的<tx:annotation-driven>
。
没有理由你需要这样做。如果您需要对使用哪个tx管理器进行细粒度控制,那么您需要使用TransactionTemplate
之类的方式以编程方式进行控制。 @Transactional
注释是一种方便,但不如直接使用底层API那么灵活。