1,配置jdbc.properties

jdbc.driver_one=...
jdbc.url_one=.....
jdbc.username_one=...
jdbc.password_one=..jdbc.driver_two=...
jdbc.url_two=.....
jdbc.username_two=...
jdbc.password_two=..jdbc.initialSize=.....
jdbc.maxActive=....
.....

2,数据源xml 配置

...<!-- 读取配置文件信息 --><context:property-placeholder ignore-unresolvable="true" location="classpath:*.properties"/><bean name="dataSource" class="com.hsq.datasource.MultipleDataSource"><property name="targetDataSources"><map key-type="java.lang.String"><entry key="dataSource_one" value-ref="dataSource_one" /><entry key="dataSource_two" value-ref="dataSource_two" /></map></property><!-- 配置默认数据源1--><property name="defaultTargetDataSource" ref="dataSource_one" /></bean><bean id="dataSource_one" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><!-- 数据库基本配置 --><property name="driverClassName" value="${jdbc.driver_one}" /><property name="url" value="${jdbc.url_one}" /><property name="username" value="${jdbc.username_one}" /><property name="password" value="${jdbc.password_one}" /><!-- 初始化连接数量 --><property name="initialSize" value="${jdbc.initialSize}"/><!-- 最大并发连接数量 --><property name="maxActive" value="${jdbc.maxActive}"/><!-- 最小空闲连接数 --><property name="minIdle" value="${jdbc.minIdle}"/><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="${jdbc.maxWait}" /><!-- 超过时间限制是否回收 --><property name="removeAbandoned" value="${jdbc.removeAbandoned}" /><!-- 超过时间限制多长 --><property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /><!-- 用来检测连接是否有效的sql,要求是一个查询语句--><property name="validationQuery" value="${jdbc.validationQuery}" /><!-- 申请连接的时候检测 --><property name="testWhileIdle" value="${jdbc.testWhileIdle}" /><!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 --><property name="testOnBorrow" value="${jdbc.testOnBorrow}" /><!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  --><property name="testOnReturn" value="${jdbc.testOnReturn}" /><property name="logAbandoned" value="true" /><!-- 配置监控统计拦截的filters,wall用于防止sql注入,stat用于统计分析 --><property name="filters" value="stat,log4j" /></bean><bean id="dataSource_two" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><!-- 数据库基本配置 --><property name="driverClassName" value="${jdbc.driver_two}" /><property name="url" value="${jdbc.url_two}" /><property name="username" value="${jdbc.username_two}" /><property name="password" value="${jdbc.password_two}" /><!-- 初始化连接数量 --><property name="initialSize" value="${jdbc.initialSize}"/><!-- 最大并发连接数量 --><property name="maxActive" value="${jdbc.maxActive}"/><!-- 最小空闲连接数 --><property name="minIdle" value="${jdbc.minIdle}"/><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="${jdbc.maxWait}" /><!-- 超过时间限制是否回收 --><property name="removeAbandoned" value="${jdbc.removeAbandoned}" /><!-- 超过时间限制多长 --><property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" /><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" /><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" /><!-- 用来检测连接是否有效的sql,要求是一个查询语句--><property name="validationQuery" value="${jdbc.validationQuery}" /><!-- 申请连接的时候检测 --><property name="testWhileIdle" value="${jdbc.testWhileIdle}" /><!-- 申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 --><property name="testOnBorrow" value="${jdbc.testOnBorrow}" /><!-- 归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能  --><property name="testOnReturn" value="${jdbc.testOnReturn}" /><property name="logAbandoned" value="true" /><!-- 配置监控统计拦截的filters,wall用于防止sql注入,stat用于统计分析 --><property name="filters" value="stat,log4j" /></bean>
...

  3.用枚举类列举数据源:

public enum DbSource {one("dataSource_one"), two("dataSource_two");private String value;DbSource(String value) {this.value = value;}public String getValue() {return value;}pulic void setValue(){this.value = value;}
}

4.数据源配置

/*** 配置mybatis多数据源,使用 MultipleDataSource.setDataSourceKey("") 配置数据源**/
public class MultipleDataSource extends AbstractRoutingDataSource {private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>();public static void setDataSourceKey(String dataSource) {dataSourceKey.set(dataSource);}public static String getDataSourceKey() {return dataSourceKey.get();}@Overrideprotected Object determineCurrentLookupKey() {return dataSourceKey.get();}
}

5,切换方式

try {MultipleDataSource.setDataSourceKey(DbSource.two.getValue());......} finally {MultipleDataSource.setDataSourceKey(DbSource.one.getValue());}

转载于:https://www.cnblogs.com/xiaohu1218/p/10187097.html

SpringMVC 中xml 配置多数据源相关推荐

  1. Spring框架中XML配置特殊属性注入

    Spring框架中XML配置特殊属性注入 前言 创建测试类 其他类型属性 前言 Spring框架中,在通过set方式进行属性注入时,可能会遇到某些特殊字符的注入,例如:null和某些标签字符" ...

  2. spring+SpringMVC+MyBatis之配置多数据源

    数据库准备 1.准备2个数据库,本例以mysql为例 在第一个数据库新建表user -- ---------------------------- -- Table structure for use ...

  3. SpringBoot中mybatis配置多数据源

    首先需要创建多个数据库 简单的user表 CREATE TABLE `user` (`id` int NOT NULL AUTO_INCREMENT,`name` varchar(255) DEFAU ...

  4. 关于SpringMVC的XML配置步骤

    1).配置前端控制 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="h ...

  5. SpringMVC中定时任务配置

    在项目中使用定时任务是常有的事,比如每天定时进行数据同步或者备份等等. 以前在从事C语言开发的时候,定时任务都是通过写个shell脚本,然后添加到linux定时任务中进行调度的. 现在使用Spring ...

  6. SpringMVC的XML配置解析

    SpringMVC有默认组件配置,默认组件都是DispatcherServlet.properties配置文件中配置的,该配置文件地址org/springframework/web/servlet/D ...

  7. Spring MVC之基于xml配置的web应用构建

    2019独角兽企业重金招聘Python工程师标准>>> 更多spring博文参考: http://spring.hhui.top/ 直接用SpringBoot构建web应用可以说非常 ...

  8. 解决springmvc中添加了静态资源访问路径之后就访问不到Controller路径的问题

    访问不到Controller,也访问不到controller路径. Controller代码: /*** Created by 李柏霖* 2020/10/19 17:35*/package com.l ...

  9. Proxool配置多数据源动态切换

    2019独角兽企业重金招聘Python工程师标准>>> 前段时间遇到多数据源动态切换问题,总结一下,做个记录,以备后续之需! 首先附上proxool连接池的配置方法:http://3 ...

最新文章

  1. python编程题-python编程练习题目
  2. C#中图片.BYTE[]和base64string的转换
  3. 中国通货膨胀率2.8%,数据分析买房风险直线上升
  4. 喜大普奔!Github 移动端上架!
  5. python和工程造价_终于懂了自学造价的方法
  6. 机器学习——深度学习之编程工具、流行网络结构、卷积神经网络结构的应用
  7. Sphinx API文档例子
  8. 使用Redis的有序集合实现排行榜功能
  9. 02-02 逐帧动画、多组动画案例 实现小人跑步效果
  10. Windows手动蓝屏触发方法
  11. C语言应用(3)——Base64编码/解码
  12. 如何防止iOS工程师简历石沉大海的几大秘技(请注意查收)
  13. 二叉树结点的两种写法
  14. Android开源框架PowerfulViewLibrary——PowerfulEditText的介绍和源码解析
  15. 《数据结构与算法分析》之插入排序
  16. liunx安装node
  17. 《跟着王老师学Excel VBA》的笔记
  18. html的text-decoration,CSS属性参考 | text-decoration
  19. 饿了么UI图片上传的实现
  20. debug记录 -- pix2pix with GAN

热门文章

  1. 汇编语言LAHF和SAHF指令
  2. Android SystemServiceManager分析
  3. Android O 7.0 启动优化的一些思路
  4. Android Activtity Security
  5. linux java编译后生成文件_Linux终端编译并执行Java文件
  6. BZOJ-2002-Bounce弹飞绵羊-分块
  7. CVPR 2020 《12-in-1: Multi-Task Vision and Language Representation Learning》论文笔记
  8. POJ 3263-Tallest Cow
  9. BZOJ 4386 Luogu P3597 [POI2015]Wycieczki (矩阵乘法)
  10. 从2018年12月起陆续将博客搬至博客园(cnblogs)