多数据源(sql server 2008,二个数据库不ip,)
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 自动扫描 ,多个包以 逗号分隔-->
<context:component-scan base-package="com.yunzhijia.cloudflow" />
<!-- 引入配置文件 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:jdbc.properties" />
</bean>
<!-- 数据库测试 -->
<bean id="dataSource_cs" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${dataSource.cs.driver}" />
<property name="url" value="${dataSource.cs.url}" />
<property name="username" value="${dataSource.cs.username}" />
<property name="password" value="${dataSource.cs.password}" />
<property name="initialSize" value="${dataSource.cs.initialSize}"></property>
<property name="maxActive" value="${dataSource.cs.maxActive}"></property>
<property name="maxIdle" value="${dataSource.cs.maxIdle}"></property>
<property name="minIdle" value="${dataSource.cs.minIdle}"></property>
<property name="maxWait" value="${dataSource.cs.maxWait}"></property>
</bean>
<!-- 数据库福清 -->
<bean id="dataSource_fq" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${dataSource.fq.driver}" />
<property name="url" value="${dataSource.fq.url}" />
<property name="username" value="${dataSource.fq.username}" />
<property name="password" value="${dataSource.fq.password}" />
<property name="initialSize" value="${dataSource.fq.initialSize}"></property>
<property name="maxActive" value="${dataSource.fq.maxActive}"></property>
<property name="maxIdle" value="${dataSource.fq.maxIdle}"></property>
<property name="minIdle" value="${dataSource.fq.minIdle}"></property>
<property name="maxWait" value="${dataSource.fq.maxWait}"></property>
</bean>
<!-- 数据库河南 -->
<bean id="dataSource_hn" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${dataSource.hn.driver}" />
<property name="url" value="${dataSource.hn.url}" />
<property name="username" value="${dataSource.hn.username}" />
<property name="password" value="${dataSource.hn.password}" />
<property name="initialSize" value="${dataSource.hn.initialSize}"></property>
<property name="maxActive" value="${dataSource.hn.maxActive}"></property>
<property name="maxIdle" value="${dataSource.hn.maxIdle}"></property>
<property name="minIdle" value="${dataSource.hn.minIdle}"></property>
<property name="maxWait" value="${dataSource.hn.maxWait}"></property>
</bean>
<bean id="dataSource" class="com.yunzhijia.cloudflow.common.utils.ThreadLocalRountingDataSource">
<property name="defaultTargetDataSource" ref="dataSource_cs"/>
<property name="targetDataSources">
<map key-type="com.yunzhijia.cloudflow.common.utils.DataSources">
<entry key="DATASOURCE_CS" value-ref="dataSource_cs"/>
<entry key="DATASOURCE_FQ" value-ref="dataSource_fq"/>
<entry key="DATASOURCE_HN" value-ref="dataSource_hn"/>
</map>
</property>
</bean>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<!-- 自动扫描mapping.xml文件 -->
<property name="mapperLocations" value="classpath:com/yunzhijia/cloudflow/mapping/**/*.xml"></property>
<!-- 指向mybatis配置文件 -->
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<!-- DAO接口所在包名,Spring会自动查找其下的类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.yunzhijia.cloudflow.dao" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
<!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 开启事务控制的注解支持 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
========================================
package com.yunzhijia.cloudflow.common.utils;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
/**
* 数据源切换
* 新建ThreadLocalRountingDataSource继承AbstractRoutingDataSource,实现切换
* @author gzh
*
*/
public class ThreadLocalRountingDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DataSourceTypeManager.get();
}
}
========================================
package com.yunzhijia.cloudflow.common.utils;
import org.apache.log4j.Logger;
/**
* 数据源切换
* @author
*
*/
public class DataSourceTypeManager {
private static final Logger log = Logger.getLogger(DataSourceTypeManager.class);
private static final ThreadLocal<DataSources> dataSourceTypes = new ThreadLocal<DataSources>(){
@Override
protected DataSources initialValue(){
log.info("==>初始化数据源:"+DataSources.DATASOURCE_CS);
return DataSources.DATASOURCE_CS;
}
};
/**
* 取DataSources
* @return DataSources
*/
public static DataSources get(){
log.info("==>取数据源:"+dataSourceTypes.get());
return dataSourceTypes.get();
}
/**
* 设置DataSources源
* @param dataSourceType
*/
public static void set(DataSources dataSourceType){
log.info("==>设置数据源:"+dataSourceType);
dataSourceTypes.set(dataSourceType);
}
/**
* 重置数据库源
*/
public static void reset(){
log.info("==>重置数据源:"+DataSources.DATASOURCE_CS);
dataSourceTypes.set(DataSources.DATASOURCE_CS);
}
}
================================
package com.yunzhijia.cloudflow.common.utils;
/**
* 配置数据库切换
* @author
* 注:注意此枚举值必须对应spring配置文件各数据源的别名
*/
public enum DataSources {
DATASOURCE_CS,DATASOURCE_FQ,DATASOURCE_HN
}
多数据源(sql server 2008,二个数据库不ip,)的更多相关文章
- 基于Sql Server 2008的分布式数据库的实践(二)
原文 基于Sql Server 2008的分布式数据库的实践(二) 从Win7连接Win2003的Sql Server 2008 1.新建链接服务器链接到Win2003的Sql Server 2008 ...
- SQL Server 2008 R2 主从数据库同步
一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2 DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...
- SQL Server 2008 R2 主从数据库同步设置
一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2 DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...
- 基于Sql Server 2008的分布式数据库的实践(五)
原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------------------------------------- ...
- SQL Server 2008 维护计划实现数据库备份
SQL Server 2008 维护计划实现数据库备份(最佳实践) 2013-08-29 09:08 by 听风吹雨, 173 阅读, 2 评论, 收藏, 编辑 一.背景 之前写过一篇关于备份的文章: ...
- SQL SERVER 2008 R2 还原数据库3154错误
1.SQL SERVER 2008 在还原数据库时,会报错. 提示错误:"备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异常终止. (Micro ...
- 基于Sql Server 2008的分布式数据库的实践(四)
原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create ...
- 基于Sql Server 2008的分布式数据库的实践(三)
原文 基于Sql Server 2008的分布式数据库的实践(三) 配置PHP 1.打开PHP配置文件,找到extension=php_mssql.dll,将前面的注释符号去掉 2.找到mssql.s ...
- 基于Sql Server 2008的分布式数据库的实践(一)
原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...
- SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件
原文:SQL Server 2008 /SQL Server 2008 R2 配置数据库邮件 从2005开始,就引入了"数据库邮件"功能.并且取代SQLMail.原有SQLMail ...
随机推荐
- Debian或者Ubuntu中安装secureCRT/secureFX
1.官网下载 ubuntu 下的 xx.deb安装包.此处使用的安装包是scrt-sfx-8.5.4-1942.ubuntu16-64.x86_64.deb,点击下载,提取码:5em3. 2.安装 d ...
- 【AOP】操作相关术语---【Spring】的【AOP】操作(基于aspectj的xml方式)
[AOP]操作相关术语 Joinpoint(连接点):类里面哪些方法可以被增强,这些方法称为连接点. Pointcut(切入点):在类里面可以有很多的方法被增强,比如实际操作中,只是增强了类里面add ...
- 【Python】利用豆瓣短评数据生成词云
在之前的文章中,我们获得了豆瓣爬取的短评内容,汇总到了一个文件中,但是,没有被利用起来的数据是没有意义的. 前文提到,有一篇微信推文的关于词云制作的一个实践记录,准备照此试验一下. 思路分析 读文件 ...
- Chapter03 第三节 浮点数
3.3 浮点数 3.3.1 浮点数的表示 常规表示:12.34.0.01.8.0 E表示: 2.5e+8(2.5 10^8).7E6(7.0 10^6) (e大小写随意) (e+x或者E-x表示小数点 ...
- xmake新增对Cuda代码编译支持
最近研究了下NVIDIA Cuda Toolkit的编译环境,并且在xmake 2.1.10开发版中,新增了对cuda编译环境的支持,可以直接编译*.cu代码. 关于Cuda Toolkit相关说明以 ...
- SpringMVC 的Model值传到JSP页面中,用EL表达试取不到值
解决方案 在jsp文件头 <%@ page isELIgnored="false" %>
- [转帖]CBO和RBO
http://www.itpub.net/thread-263395-1-1.html 参数不能随便改啊.. optimizer_features_enable('8.1.7') ORACLE 提供了 ...
- MySQL-快速入门(7)索引
1.什么是索引 索引是对数据库表中一列或者多列的值进行排序的一种结构.索引是在存储引擎中实现的,每种存储引擎中的索引不一定完全相同. MySQL中索引的存储类型有两种:btree和hash.MyISA ...
- Highways POJ-1751 最小生成树 Prim算法
Highways POJ-1751 最小生成树 Prim算法 题意 有一个N个城市M条路的无向图,给你N个城市的坐标,然后现在该无向图已经有M条边了,问你还需要添加总长为多少的边能使得该无向图连通.输 ...
- 使用pyenv对python版本管理
1.使用pyenv进行python版本管理 1.1安装对应的依赖包,如果不安装后续操作可能会因为缺少某一个变量包而出现错误 sudo apt-get install -y make build- ...