我在SpringMVC项目中连接两个数据库,配置如下:
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
……
</bean>
<bean id="dataSource1" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
……
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
……
</bean>
<bean id="sessionFactory1" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
……
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionManager1" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory1"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
<tx:annotation-driven transaction-manager="transactionManager1" proxy-target-class="true"/>
DataSource1数据库对应的代码如下:
Dao:
public void updateUseSession(Tshop tshop) {
getHibernateTemplate().update(tshop);// 实际上最终还是调用session.update(tshop);方法
// sessionFactoryForAmoeba.getCurrentSession().update(tshop);
}
Service:
@Transactional("transactionManager1")
public void updateUseSession(Tshop tshop) {
ssbAmoebaDao.updateUseSession(tshop);
throw new RuntimeException();
}
我的测试:
1. 如果事务注解配置为@Transactional("transactionManager1"),那么事务回滚了
2. 如果事务注解配置为@Transactional,即我故意配置错误,那么仍然回滚了!
我现在的问题就是:明明我的事务注解配置错了,为什么还是回滚了?