SpringMVC 中xml 配置多数据源
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();
- }
- @Override
- protected Object determineCurrentLookupKey() {
- return dataSourceKey.get();
- }
- }
5,切换方式
- try {
- MultipleDataSource.setDataSourceKey(DbSource.two.getValue());
- ......
- } finally {
- MultipleDataSource.setDataSourceKey(DbSource.one.getValue());
- }
SpringMVC 中xml 配置多数据源的更多相关文章
- springmvc web.xml配置之 -- SpringMVC IOC容器初始化
SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...
- log4net保存到数据库系列三、代码中xml配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- 分享知识-快乐自己:SpringMvc中的四种数据源及相关配置(整合快速集成开发)
数据库连接: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://39.105.105.186:3306/SpringMybatis?us ...
- 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置
首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...
- springmvc web.xml配置之 -- ContextLoaderListener
首先回归一下web.xml的常用配置,看一个示例: <context-param> <param-name>contextConfigLocation</param-na ...
- spring 5.x 系列第1篇 —— springmvc基础 (xml配置方式)
文章目录 一.搭建hello spring工程 1.1 项目搭建 1.2 相关配置讲解 二.配置自定义拦截器 三.全局异常处理 四.参数绑定 4.1 参数绑定 4.2 关于日期格式转换的三种方法 五. ...
- SpringMvc的xml配置与annotation配置的例子的区别
1.导入jar包时,要在xml配置基础上加 spring-aop-4.2.2.RELEASE.jar (注解的时候需要) 2.编写controller的时候要annotation需要做相关配置即红色部 ...
- Spring 中 Xml配置文件属性的说明
Xml配置文件属性的说明: <bean id="TheAction" ⑴ class="net.xiaxin.spring.qs.UpperAction" ...
- spring中xml配置和autowired混用
1.类的混用: 配置文件中的配置: <bean id="a" class="com.ab.cc.A" /> 类中的配置 @Autowired A a ...
随机推荐
- BusyBox ifup udhcpc后台运行
/********************************************************************** * BusyBox ifup udhcpc后台运行 * ...
- Spinner的用法
1.先自定义一个数组 2.在new一个ArrayAdapter方法: ArrayAdapter<String> adapter = new ArrayAdapter<String&g ...
- [TopCoder12141]SweetFruits
vjudge description 有\(n\)个水果,有一些水果是香的,它们各有一个香度值,剩下的水果是不香的. 现在你要把这\(n\)个水果连成一棵树,定义一个水果是真香的当且仅当它是香的且他与 ...
- 重新学习Spring之核心IOC容器的底层原理
一:IOC容器的定义 控制反转(Inversion of Control,英文缩写为IoC)是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. 控制反转一般 ...
- POJ3696 The Luckiest number
题意 Language:Default The Luckiest number Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7 ...
- docker默认配置文件不存在问题解决
Docker默认的配置文件/etc/default/docker或者/etc/sysconfig/docker都不起作用,查看了一下/lib/systemd/system/docker.service ...
- Spring 部署Tomcat 404 错误解决方案
将Spring项目部署到tomcat后,访问网页出现404错误 HTTP Status 404 – Not Found The origin server did not find a current ...
- popup控件代码示例
1.jsp页面input框中的代码 <td class="value"> <input name="demos[0].id" type=&qu ...
- ASP.NET 获得当前网页名字
Code string currentFilePath = HttpContext.Current.Request.FilePath; string CurrentPageName = current ...
- php 的两个扩展 memcache 和 memcachd
今天绕了很大弯子, 因为自己写的php的memcache类. 于是出现了下面问题 在本地测试好好的, 线上就出了问题 原因是线上使用的是memcache, 我本地使用的是memcached 区别参考网 ...