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!

  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/widget90/p/8017105.html
Copyright © 2011-2022 走看看