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

时间: 2024-12-23 07:03:12

Spring3.0配置多个事务管理器(即操作多个数据源)的方法的相关文章

spring的annotation-driven配置事务管理器详解

http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html 好吧,这个作者也是转载的 ———————————————————————————————————————————————————————————————————————————————————— 这篇文章是我从ITeye上复制来的,看了一遍,觉得很深刻,决定把他复制来,对原作者表示感谢. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

spring 配置事务管理器

在Spring中数据库事务是通过PlatformTransactionManager进行管理的,jdbcTemplate是不能支持事务的,而能够支持事务的是org.springframework.transaction.support.TransactionTemplate模板,它是Spring所提供的事务管理器的模板 •事务的创建.提交和回滚是通过PlatformTransactionManager接口来完成的. •当事务产生异常时会回滚事务,在默认的实现中所有的异常都会回滚.我们可以通过配置

Spring jdbctemplate和事务管理器 全注解配置 不使用xml

/** * spring的配置类,相当于bean.xml */@Configuration//@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>// 作用为:配置spring容器(应用上下文)@ComponentScan("com.zxh")//需要扫描的包@Import({JdbcConfig.class,TransactionConfig.class})//子配置类@PropertySource("jdbcC

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 此错误好像只有sql server2005才有,2008数据库以后版本就没有此错误了. 与基础事务管理器的通信失败. .net 代码里 写事务代码 如: using System.Transactions; using (TransactionScope ts = new TransactionScope()) { } ts.Complete(); DTC登陆账户为

该伙伴事务管理器已经禁止了它对远程/网络事务的支持

原文地址 简介 当启动分布式的事务涉及 SQL Server 数据库引擎时,需要针对MSDTC进行一些配置.否则可能会出现以下错误:合作伙伴事务管理器已经禁用对远程/网络事务的支持. 解决方案 1.       双方启动MSDTC服务,方式为:命令行下service.msc,选择distributed link trackingclient ,右键启动,并且,右键->属性->启动类型改为手动. 2.       对dtc进行手动设置,方式如下:控制面板->管理工具->在[组件服务]

Aop事务小结(事务管理器和自身构建)

声明市事务是利用AOP来实现的. 1.采用事务管理器AOP: <!--3.配置事务切面:控制住连接池 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="comboPooledDa

spring事务管理器设计思想(一)

首先堆栈和堆(托管堆)都在进程的虚拟内存中.(在32位处理器上每个进程的虚拟内存为4GB) 堆栈stack 1.堆栈中存储值类型 2.堆栈实际上是向下填充,即由高内存地址指向低内存地址填充 3.堆栈的工作方式是先分配内存的变量后释放(先进后出原则) 4.堆栈中的变量是从下向上释放,这样就保证了堆栈中先进后出的规则不与变量的生命周期起冲突 5.堆栈的性能非常高,但是对于所有的变量来说还不灵活,而且变量的生命周期必须嵌套. 6.通常我们希望使用一种方法分配内存来存储数据,并且方法退出后很长一段时间内

spring boot配置mybatis和事务管理

spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spring Boot 启动父依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

[mybatis-spring] Transaction 事务/事务处理/事务管理器

使用mybatis-spring的主要原因之一就是: mybatis-spring允许mybatis参与到spring 事务中. mybatis-spring leverage[use (something) to maximum advantage)] 存在的DataSourceTransactionManager , 而无需为mybatis特意新建一个新的事务管理. 一旦Spring tansaction manager被配置,你可以像配置Spring中的transactions as yo