spring 多数据源

bean中声明引用的数据源:

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
   xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
   xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context-3.0.xsd 
                        http://www.springframework.org/schema/tx 
                        http://www.springframework.org/schema/tx/spring-tx-3.0.xsd 
                        http://www.springframework.org/schema/aop  
                        http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
                        http://www.springframework.org/schema/mvc 
                     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
   <context:component-scan base-package="com.chanjet.chanapp.bizpubsvc" />
   <import resource="classpath:springcontext/dubbo-svc-provider.xml" />
   <import resource="classpath:springcontext/applicationContext-configreader.xml" />
   <import resource="classpath:springcontext/applicationContext-database.xml" />
</beans>

 

多数据源的配置(applicationContext-database.xml):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
      xmlns:util="http://www.springframework.org/schema/util"
      xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"
      default-autowire="byName">

   <!--(一) 商务系统 数据源定义 biz(商务库从库)
        1, 数据源
        2, 事务管理器
        3, sql Session 工程
        4, maper  文件扫描 装配等
                                  -->
   <!-- 数据源 -->
   <bean id="bizDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
      <!-- Connection Info -->
      <property name="driverClassName" value="${dbcp.SQLServer.driver}" />
      <property name="url" value="${dbcp.SQLServer.url}" />
      <property name="username" value="${dbcp.SQLServer.username}" />
      <property name="password" value="${dbcp.SQLServer.password}" />

      <!-- Connection Pooling Info -->
      <property name="validationQuery" value="${dbcp.SQLServer.validationQuery}" />
      <property name="initialSize" value="${dbcp.SQLServer.initialSize}" />
      <property name="maxActive" value="${dbcp.SQLServer.maxActive}" />
      <property name="minIdle" value="${dbcp.SQLServer.minIdle}" />
      <property name="maxIdle" value="${dbcp.SQLServer.maxIdle}" />
      <property name="timeBetweenEvictionRunsMillis" value="${dbcp.SQLServer.timeBetweenEvictionRunsMillis}" />
      <property name="minEvictableIdleTimeMillis" value="${dbcp.SQLServer.minEvictableIdleTimeMillis}" />
      <property name="numTestsPerEvictionRun" value="${dbcp.SQLServer.numTestsPerEvictionRun}" />
      <property name="maxWait" value="${dbcp.SQLServer.maxWait}" />
      <property name="removeAbandoned" value="${dbcp.SQLServer.removeAbandoned}" />
      <property name="removeAbandonedTimeout" value="${dbcp.SQLServer.removeAbandonedTimeout}" />
      <property name="testOnBorrow" value="${dbcp.SQLServer.testOnBorrow}" />
      <property name="testOnReturn" value="${dbcp.SQLServer.testOnReturn}" />
      <property name="testWhileIdle" value="${dbcp.SQLServer.testWhileIdle}" />
      <property name="defaultAutoCommit" value="false" />


   </bean>

   <!-- 事务管理器 -->
   <bean id="bizTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="bizDataSource" />
      <qualifier value="bizTX"/>
   </bean>

   <!-- for bizTransactionManager 的事务描述 -->
   <tx:advice id="bizTxAdvice" transaction-manager="bizTransactionManager">
      <tx:attributes>
         <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
      </tx:attributes>
   </tx:advice>


   <!--  mybatis SqlSessionFactoryBean 工厂 -->
   <bean id="bizSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="configLocation" value="classpath:mybatisConfig.xml"></property>
      <property name="dataSource" ref="bizDataSource" />
   </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage"
              value="com.chanjet.chanapp.bizpubsvc.mapper.biz" />
      <property name="sqlSessionFactoryBeanName" value="bizSessionFactory"/>
   </bean>

   <!--                     biz end                                       -->


   <!--(二) 客户DB系统 数据源定义 customer
             1, 数据源
             2, 事务管理器
             3, sql Session 工程
             4, maper  文件扫描 装配等
                                       -->
   <!-- 数据源 -->
   <bean id="customerDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
      <!-- Connection Info -->
      <property name="driverClassName" value="${dbcp.customer.driver}" />
      <property name="url" value="${dbcp.customer.url}" />
      <property name="username" value="${dbcp.customer.username}" />
      <property name="password" value="${dbcp.customer.password}" />

      <!-- Connection Pooling Info -->
      <property name="validationQuery" value="${dbcp.customer.validationQuery}" />
      <property name="initialSize" value="${dbcp.customer.initialSize}" />
      <property name="maxActive" value="${dbcp.customer.maxActive}" />
      <property name="minIdle" value="${dbcp.customer.minIdle}" />
      <property name="maxIdle" value="${dbcp.customer.maxIdle}" />
      <property name="timeBetweenEvictionRunsMillis" value="${dbcp.customer.timeBetweenEvictionRunsMillis}" />
      <property name="minEvictableIdleTimeMillis" value="${dbcp.customer.minEvictableIdleTimeMillis}" />
      <property name="numTestsPerEvictionRun" value="${dbcp.customer.numTestsPerEvictionRun}" />
      <property name="maxWait" value="${dbcp.customer.maxWait}" />
      <property name="removeAbandoned" value="${dbcp.customer.removeAbandoned}" />
      <property name="removeAbandonedTimeout" value="${dbcp.customer.removeAbandonedTimeout}" />
      <property name="testOnBorrow" value="${dbcp.customer.testOnBorrow}" />
      <property name="testOnReturn" value="${dbcp.customer.testOnReturn}" />
      <property name="testWhileIdle" value="${dbcp.customer.testWhileIdle}" />
      <property name="defaultAutoCommit" value="false" />

   </bean>

   <!-- 事务管理器 -->
   <bean id="customerTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="customerDataSource" />
      <qualifier value="customerTX"/>
   </bean>

   <!-- for customerTransactionManager 的事务描述 -->
   <tx:advice id="customerTxAdvice" transaction-manager="customerTransactionManager">
      <tx:attributes>
         <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
      </tx:attributes>
   </tx:advice>


   <!-- mybatis SqlSessionFactoryBean 工厂 -->
   <bean id="customerSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="configLocation" value="classpath:mybatisConfig.xml"></property>
      <property name="dataSource" ref="customerDataSource" />
   </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage"
              value="com.chanjet.chanapp.bizpubsvc.mapper.customer" />
      <property name="sqlSessionFactoryBeanName" value="customerSessionFactory"/>
   </bean>

   <!--                     customer end                                       -->

   <!-- 呼叫中心 数据源定义 hjzx
             1, 数据源
             2, 事务管理器
             3, sql Session 工程
             4, maper  文件扫描 装配等
                                       -->
   <!-- 数据源 -->
   <bean id="hjzxDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
      <!-- Connection Info -->
      <property name="driverClassName" value="${dbcp.hjzx.driver}" />
      <property name="url" value="${dbcp.hjzx.url}" />
      <property name="username" value="${dbcp.hjzx.username}" />
      <property name="password" value="${dbcp.hjzx.password}" />

      <!-- Connection Pooling Info -->
      <property name="validationQuery" value="${dbcp.hjzx.validationQuery}" />
      <property name="initialSize" value="${dbcp.hjzx.initialSize}" />
      <property name="maxActive" value="${dbcp.hjzx.maxActive}" />
      <property name="minIdle" value="${dbcp.hjzx.minIdle}" />
      <property name="maxIdle" value="${dbcp.hjzx.maxIdle}" />
      <property name="timeBetweenEvictionRunsMillis" value="${dbcp.hjzx.timeBetweenEvictionRunsMillis}" />
      <property name="minEvictableIdleTimeMillis" value="${dbcp.hjzx.minEvictableIdleTimeMillis}" />
      <property name="numTestsPerEvictionRun" value="${dbcp.hjzx.numTestsPerEvictionRun}" />
      <property name="maxWait" value="${dbcp.hjzx.maxWait}" />
      <property name="removeAbandoned" value="${dbcp.hjzx.removeAbandoned}" />
      <property name="removeAbandonedTimeout" value="${dbcp.hjzx.removeAbandonedTimeout}" />
      <property name="testOnBorrow" value="${dbcp.hjzx.testOnBorrow}" />
      <property name="testOnReturn" value="${dbcp.hjzx.testOnReturn}" />
      <property name="testWhileIdle" value="${dbcp.hjzx.testWhileIdle}" />
      <property name="defaultAutoCommit" value="false" />

   </bean>

   <!-- 事务管理器 -->
   <bean id="hjzxTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="hjzxDataSource" />
      <qualifier value="hjzxTX"/> 
   </bean>

   <!-- for hjzxTransactionManager 的事务描述 -->
   <tx:advice id="hjzxTxAdvice" transaction-manager="hjzxTransactionManager">
      <tx:attributes>
         <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
      </tx:attributes>
   </tx:advice>


   <!-- mybatis SqlSessionFactoryBean 工厂 -->
   <bean id="hjzxSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="configLocation" value="classpath:mybatisConfig.xml"></property>
      <property name="dataSource" ref="hjzxDataSource" />
   </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage"
              value="com.chanjet.chanapp.bizpubsvc.mapper.hjzx" />
      <property name="sqlSessionFactoryBeanName" value="hjzxSessionFactory"/>
   </bean>

   <!--                     hjzx end                                       -->


   <!-- biz线上的psql数据库 数据源定义 data
             1, 数据源
             2, 事务管理器
             3, sql Session 工程
             4, maper  文件扫描 装配等
                                       -->
   <!-- 数据源 -->
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
      <!-- Connection Info -->
      <property name="driverClassName" value="${dbcp.pg.driver}" />
      <property name="url" value="${dbcp.pg.url}" />
      <property name="username" value="${dbcp.pg.username}" />
      <property name="password" value="${dbcp.pg.password}" />

      <!-- Connection Pooling Info -->
      <property name="validationQuery" value="${dbcp.pg.validationQuery}" />
      <property name="initialSize" value="${dbcp.pg.initialSize}" />
      <property name="maxActive" value="${dbcp.pg.maxActive}" />
      <property name="minIdle" value="${dbcp.pg.minIdle}" />
      <property name="maxIdle" value="${dbcp.pg.maxIdle}" />
      <property name="timeBetweenEvictionRunsMillis" value="${dbcp.pg.timeBetweenEvictionRunsMillis}" />
      <property name="minEvictableIdleTimeMillis" value="${dbcp.pg.minEvictableIdleTimeMillis}" />
      <property name="numTestsPerEvictionRun" value="${dbcp.pg.numTestsPerEvictionRun}" />
      <property name="maxWait" value="${dbcp.pg.maxWait}" />
      <property name="removeAbandoned" value="${dbcp.pg.removeAbandoned}" />
      <property name="removeAbandonedTimeout" value="${dbcp.pg.removeAbandonedTimeout}" />
      <property name="testOnBorrow" value="${dbcp.pg.testOnBorrow}" />
      <property name="testOnReturn" value="${dbcp.pg.testOnReturn}" />
      <property name="testWhileIdle" value="${dbcp.pg.testWhileIdle}" />
      <property name="defaultAutoCommit" value="false" />

   </bean>

   <!-- 事务管理器 ** 是默认的 transactionManager ** -->
   <bean id="psqlTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager" name="transactionManager">
      <property name="dataSource" ref="dataSource" />
      <qualifier value="psqlTX"/>
   </bean>

   <!-- for psqlTransactionManager 的事务描述 -->
   <tx:advice id="psqlTxAdvice" transaction-manager="psqlTransactionManager">
      <tx:attributes>
         <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
      </tx:attributes>
   </tx:advice>


   <!-- mybatis SqlSessionFactoryBean 工厂 -->
   <bean id="psqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="configLocation" value="classpath:mybatisConfig.xml"></property>
      <property name="dataSource" ref="dataSource" />
   </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage"
              value="com.chanjet.chanapp.bizpubsvc.mapper.psql" />
      <property name="sqlSessionFactoryBeanName" value="psqlSessionFactory"/>
   </bean>

   <!--                                         pgSQL end                       -->

   <!-- mappers -->



   <!-- 商务系统 数据源定义 biz(商务库主库)
        1, 数据源
        2, 事务管理器
        3, sql Session 工程
        4, maper  文件扫描 装配等
                                  -->
   <!-- 数据源 -->
   <bean id="bizMasterDataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
      <!-- Connection Info -->
      <property name="driverClassName" value="${dbcp.bizMaster.driver}" />
      <property name="url" value="${dbcp.bizMaster.url}" />
      <property name="username" value="${dbcp.bizMaster.username}" />
      <property name="password" value="${dbcp.bizMaster.password}" />

      <!-- Connection Pooling Info -->
      <property name="validationQuery" value="${dbcp.bizMaster.validationQuery}" />
      <property name="initialSize" value="${dbcp.bizMaster.initialSize}" />
      <property name="maxActive" value="${dbcp.bizMaster.maxActive}" />
      <property name="minIdle" value="${dbcp.bizMaster.minIdle}" />
      <property name="maxIdle" value="${dbcp.bizMaster.maxIdle}" />
      <property name="timeBetweenEvictionRunsMillis" value="${dbcp.bizMaster.timeBetweenEvictionRunsMillis}" />
      <property name="minEvictableIdleTimeMillis" value="${dbcp.bizMaster.minEvictableIdleTimeMillis}" />
      <property name="numTestsPerEvictionRun" value="${dbcp.bizMaster.numTestsPerEvictionRun}" />
      <property name="maxWait" value="${dbcp.bizMaster.maxWait}" />
      <property name="removeAbandoned" value="${dbcp.bizMaster.removeAbandoned}" />
      <property name="removeAbandonedTimeout" value="${dbcp.bizMaster.removeAbandonedTimeout}" />
      <property name="testOnBorrow" value="${dbcp.bizMaster.testOnBorrow}" />
      <property name="testOnReturn" value="${dbcp.bizMaster.testOnReturn}" />
      <property name="testWhileIdle" value="${dbcp.bizMaster.testWhileIdle}" />
      <property name="defaultAutoCommit" value="false" />


   </bean>

   <!-- 事务管理器 -->
   <bean id="bizMasterTransactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="bizMasterDataSource" />
      <qualifier value="bizMasterTX"/>
   </bean>

   <!-- for bizTransactionManager 的事务描述 -->
   <tx:advice id="bizMasterTxAdvice" transaction-manager="bizMasterTransactionManager">
      <tx:attributes>
         <tx:method name="*" propagation="REQUIRED" rollback-for="Exception" />
      </tx:attributes>
   </tx:advice>


   <!-- mybatis SqlSessionFactoryBean 工厂 -->
   <bean id="bizMasterSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="configLocation" value="classpath:mybatisConfig.xml"></property>
      <property name="dataSource" ref="bizMasterDataSource" />
   </bean>
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage"
              value="com.chanjet.chanapp.bizpubsvc.mapper.bizmaster" />
      <property name="sqlSessionFactoryBeanName" value="bizMasterSessionFactory"/>
   </bean>

   <!--                     biz end                                       -->

   <!-- 开启事务注解驱动,默认的事务开在 psql 上 -->
   <tx:annotation-driven transaction-manager="psqlTransactionManager"/>

</beans>

备注:

1)qualifier 为 bean 中引入事务管理器的名字

DAO(bean)中的引入事务管理器方式:

@Override
@Transactional(value = "bizMasterTX", readOnly = true)
public ActiveCodeDTO queryBizMasterActiveCode(String cardNo) throws Exception {

    return queryActiveCodeImpl(bizMasterActiveCodeMapper, cardNo);
}

转载于:https://my.oschina.net/yangming0322/blog/739195

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值