这里有新鲜出炉的精品教程,程序狗速度看过来!
Spring 是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于 IOC 和 AOP 的构架多层 j2ee 系统的框架,但它不强迫你必须在每一层 中必须使用 Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的 MVC,对不同的数据访问技术提供了统一的接口,采用 IOC 使得可以很容易的实现 bean 的装配,提供了简洁的 AOP 并据此实现 Transcation Managment,等等
这篇文章主要介绍了 Spring3.0 配置多个事务管理器(即操作多个数据源)的方法的相关资料, 需要的朋友可以参考下
Spring3.0 配置多个事务管理器(即操作多个数据源)的方法
大多数项目只需要一个事务管理器。然而,有些项目为了提高效率、或者有多个完全不同又不相干的数据源,最好用多个事务管理器。机智的 Spring 的 Transactional 管理已经考虑到了这一点,首先分别定义多个 transactional manager,并为 qualifier 属性指定不同的值;然后在需要使用 @Transactional 注解的时候指定 TransactionManager 的 qualifier 属性值或者直接使用 bean 名称。配置和代码使用的例子:
- <tx:annotation-driven/>
- <bean id="transactionManager1" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="datasource1">
- </property>
- <qualifier value="datasource1Tx" />
- </bean>
- <bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource" ref="datasource2">
- </property>
- <qualifier value="datasource2Tx" />
- </bean>
使用时,用 @Transactional("datasource1Tx") 和 @Transactional("datasource2Tx"),来区别具体使用某个事务管理器
- public class TransactionalService {
- @Transactional("datasource1Tx") public void setSomethingInDatasource1() {...
- }
- @Transactional("datasource2Tx") public void doSomethingInDatasource2() {...
- }
- }
或者,直接使用 transactin manager 的 bean 名字:
@Transactional("transactionManager1")
如果是使用 @Transactional(),相当于使用缺省的 transaction mananger 名字,即:@Transactional("transactionManager")
参考:http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#tx-multiple-tx-mgrs-with-attransactional
来源: http://www.phperz.com/article/17/0824/338948.html