zoukankan      html  css  js  c++  java
  • spring多数据源事务配置

    项目中遇到多数据源问题,

    对于每个数据源需要单独完成事务控制,

    这里记录下具体实现方法

    在spring配置文件中

    定义两个数据源

      <!-- 数据源定义(spring-jndi) -->
        <jee:jndi-lookup id="datasourceX" jndi-name="jdbc/x" />
       <!-- 数据源定义(spring-jndi) -->
        <jee:jndi-lookup id="datasourceY" jndi-name="jdbc/y" />

    定义了两个事务管理器:transactionManagerX,transactionManagerY,分管两个数据源datasourceX和datasourceY.

    <bean id="transactionManagerX" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="datasourceX" />
        </bean>
        
        <bean id="transactionManagerY" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="datasourceY" />
        </bean>

      <!-- 使用annotation定义事务驱动 -->
        <tx:annotation-driven transaction-manager="transactionManagerX" />

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

    在使用时使用如下方式,区分事务是对于哪一个数据源做操作:

       @Transactional(value = "transactionManagerX", rollbackFor = Exception.class)

       @Transactional(value = "transactionManagerY", rollbackFor = Exception.class)

    另外做下记录,如果需要在多数据源之间完成事务性操作,需要使用Java/JTA 事务处理工具,例如:Atomikos!

  • 相关阅读:
    Linux查看占用内存前10的命令
    使用RestTemplate调用SpringCloud注册中心内的服务
    Eureka集群配置
    MySQL常用命令集合(偏向运维管理)
    pytest: error: unrecognized arguments报错解决
    MongoDB的安装
    MongoDB多条件分组聚合查询
    在排序数组中查找元素的第一个和最后一个位置
    搜索二维矩阵
    搜索旋转排序数组
  • 原文地址:https://www.cnblogs.com/widget90/p/8017105.html
Copyright © 2011-2022 走看看