工作中需要接入其他公司业务系统的数据进行分析,于是接入它们的db。

使用双数据源配置感觉如下:

  database、sessionFactory、扫描器、事务管理器等双份。 听说如果两个数据源需要一起使用加事务的时候有点恶心,没有遇到该业务问题所以没有深入。

具体配置:

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean class="com.kunpu.appopm.dal.config.JDBCPlaceholderConfigurer">
<property name="order" value=""/>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="location" value="file:/opt/configs/appopm/datasource.properties"/>
</bean> <bean id="dataSource1" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${datasource.driverClassName}"/>
<property name="url" value="${datasource1.url}"/>
<property name="username" value="${datasource1.username}"/>
<property name="password" value="${datasource1.password}"/>
<property name="connectionProperties" value="${datasource.connectionProperties}"/>
<property name="initialSize" value="${datasource.initialsize}"/>
<property name="maxActive" value="${datasource.maxActive}"/>
<property name="minIdle" value="${datasource.minIdle}"/>
<property name="maxWait" value="${datasource.maxWait}"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="testOnBorrow" value="${datasource.testOnBorrow}"/>
<property name="testOnReturn" value="${datasource.testOnReturn}"/>
<property name="testWhileIdle" value="${datasource.testWhileIdle}"/>
<property name="timeBetweenEvictionRunsMillis"
value="${datasource.timeBetweenEvictionRunsMillis}"/>
<property name="minEvictableIdleTimeMillis"
value="${datasource.minEvictableIdleTimeMillis}"/>
<property name="removeAbandoned" value="${datasource.removeAbandoned}"/>
<property name="removeAbandonedTimeout" value="${datasource.removeAbandonedTimeoutMillis}"/>
<property name="logAbandoned" value="${datasource.logAbandoned}"/>
<property name="filters" value="${datasource.filters}"/>
<property name="poolPreparedStatements" value="${datasource.poolPreparedStatements}"/>
<property name="maxPoolPreparedStatementPerConnectionSize"
value="${datasource.maxPoolPreparedStatementPerConnectionSize}"/>
</bean> <bean id="sessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource1"/>
<property name="configLocation" value="classpath:/configs/mybatis-config.xml"/>
<property name="mapperLocations">
<list>
<value>classpath:/mapper1/**/*.xml</value>
</list>
</property>
<property name="typeAliasesPackage" value="com.kunpu.appopm.dal.model"/>
<property name="plugins">
<list>
<bean class="com.kunpu.appopm.common.util.log.SQLLogInterceptor"/>
<bean class="com.kunpu.frameworks.cat.util.CatDBInterceptor"/>
<bean class="com.kunpu.frameworks.db.pagination.PaginationInterceptor">
<property name="dialect">
<bean class="com.kunpu.frameworks.db.pagination.MySqlDialect"/>
</property>
</bean>
</list>
</property>
</bean> <bean id="scanner1" class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sessionFactory1"/>
<property name="basePackage" value="com.kunpu.appopm.dal"/>
<property name="annotationClass" value="com.kunpu.appopm.dal.config.BaseDB"/>
<property name="properties">
<value>
mappers=tk.mybatis.mapper.common.Mapper
IDENTITY=MYSQL
notEmpty=true
</value>
</property>
</bean> <bean id="sqlSessionTemplate1" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="" ref="sessionFactory1"/>
</bean> <bean id="transactionManager1"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource1"/>
</bean> <!-- 事务模板 -->
<bean id="transactionTemplate1"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager1"/>
<constructor-arg name="transactionManager" ref="transactionManager1"/>
</bean> <bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${datasource.driverClassName}"/>
<property name="url" value="${datasource2.url}"/>
<property name="username" value="${datasource2.username}"/>
<property name="password" value="${datasource2.password}"/>
<property name="connectionProperties" value="${datasource.connectionProperties}"/>
<property name="initialSize" value="${datasource.initialsize}"/>
<property name="maxActive" value="${datasource.maxActive}"/>
<property name="minIdle" value="${datasource.minIdle}"/>
<property name="maxWait" value="${datasource.maxWait}"/>
<property name="validationQuery" value="SELECT 1 FROM DUAL"/>
<property name="testOnBorrow" value="${datasource.testOnBorrow}"/>
<property name="testOnReturn" value="${datasource.testOnReturn}"/>
<property name="testWhileIdle" value="${datasource.testWhileIdle}"/>
<property name="timeBetweenEvictionRunsMillis"
value="${datasource.timeBetweenEvictionRunsMillis}"/>
<property name="minEvictableIdleTimeMillis"
value="${datasource.minEvictableIdleTimeMillis}"/>
<property name="removeAbandoned" value="${datasource.removeAbandoned}"/>
<property name="removeAbandonedTimeout" value="${datasource.removeAbandonedTimeoutMillis}"/>
<property name="logAbandoned" value="${datasource.logAbandoned}"/>
<property name="filters" value="${datasource.filters}"/>
<property name="poolPreparedStatements" value="${datasource.poolPreparedStatements}"/>
<property name="maxPoolPreparedStatementPerConnectionSize"
value="${datasource.maxPoolPreparedStatementPerConnectionSize}"/>
</bean> <bean id="scanner2" class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sessionFactory2"/>
<property name="basePackage" value="com.kunpu.appopm.dal"/>
<property name="annotationClass" value="com.kunpu.appopm.dal.config.BaseDB2"/>
<property name="properties">
<value>
mappers=tk.mybatis.mapper.common.Mapper
IDENTITY=MYSQL
notEmpty=true
</value>
</property>
</bean> <bean id="sessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
<property name="configLocation" value="classpath:/configs/mybatis-config.xml"/>
<property name="mapperLocations">
<list>
<value>classpath:/mapper2/**/*.xml</value>
</list>
</property>
<property name="typeAliasesPackage" value="com.kunpu.appopm.dal.model"/>
<property name="plugins">
<list>
<bean class="com.kunpu.appopm.common.util.log.SQLLogInterceptor"/>
<bean class="com.kunpu.frameworks.cat.util.CatDBInterceptor"/>
<bean class="com.kunpu.frameworks.db.pagination.PaginationInterceptor">
<property name="dialect">
<bean class="com.kunpu.frameworks.db.pagination.MySqlDialect"/>
</property>
</bean>
</list>
</property>
</bean> <bean id="sqlSessionTemplate2" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="" ref="sessionFactory2"/>
</bean> <bean id="transactionManager2"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource2"/>
</bean> <!-- 事务模板 -->
<bean id="transactionTemplate2"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager1"/>
<constructor-arg name="transactionManager" ref="transactionManager1"/>
</bean>

这里扫描指定dao使用的是basePage配合指定注解,应该是一点亮点吧。

最新文章

  1. Android广播接收器BroadcastRceiver
  2. 通用权限管理系统组件3.9 的 Oracle 数据库创建脚本参考
  3. 安装rabbitmq以及python调用rabbitmq--暂欠
  4. 【Subsets II】cpp
  5. 在浏览器中打开本地应用(iOS)
  6. setTimeout和setImmediate以及process.nextTick的区别
  7. Java NIO (三) 通道(Channel)
  8. 使用Netbeans内置的Git工具
  9. Spring消息之WebSocket
  10. (译)WebRTC实战: STUN, TURN, Signaling
  11. JavaScript “函数重载”
  12. Luogu P5168 xtq玩魔塔
  13. Embedded training,嵌入式训练
  14. jenkins(4): jenkins 插件
  15. dataset to list
  16. nginx(二)----ubuntu14.04下启动或重启和关闭nginx
  17. golang的json操作[转]
  18. C# 指针操作相关
  19. idea 类注释,方法注释设置
  20. WPF实例,以getFiles()获取文件夹,treeview的应用

热门文章

  1. Kaggle泰坦尼克数据科学解决方案
  2. every day a practice —— morning(7)
  3. 自己动手编写IPv4地址包含关系测试的小脚本
  4. Spring Cloud之配置中心搭建
  5. oracle 基本操作--事务
  6. 微信公众号使用LocalStorage解决返回缓存问题
  7. SAP 打开SAP物料帐期和财务账期
  8. 第 3 章 HTML5 网页中的文本和图像
  9. zzw原创_oracle回收站相关操作知识
  10. 一、Redis数据备份与恢复