首页 > 学院 > 开发设计 > 正文

SpringMVC配置双数据源

2019-11-10 17:27:52
字体:
来源:转载
供稿:网友

1.在xml中配置对应的bean

<!--数据源dataSourceLocal--><bean id="dataSourceLocal" class="org.apache.commons.dbcp.BasicDataSource"> <PRoperty name="driverClassName" value="${jdbc.className}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="passWord" value="${jdbc.password}" /></bean><!--数据源dataSource137--><bean id="dataSource137" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.localDataBase.className}" /> <property name="url" value="${jdbc.localDataBase.url}" /> <property name="username" value="${jdbc.localDataBase.username}" /> <property name="password" value="${jdbc.localDataBase.password}" /></bean><!--将数据源引入的dataSource--><bean id="dataSource" class="com.simple.common.dataconfig.DynamicDataSource"> <!--将两个数据源引入到Map<dataSourceName,dataSource>--> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry value-ref="dataSourceLocal" key="dataSourceLocal"></entry> <entry value-ref="dataSource137" key="dataSource137"></entry> </map> </property> <!--指定默认使用的数据源--> <property name="defaultTargetDataSource" ref="dataSourceLocal"> </property></bean>

2.自己实现DynamicDataSource这个bean

package com.simple.common.dataconfig;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;//需要继承AbstractRoutingDataSource,通过determineCurrentLookupKey方法设置当前数据源public class DynamicDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getDBType(); }}

3.封装数据源

package com.simple.common.dataconfig;public class DataSourceContextHolder { private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); //设置使用的数据源,dbType为bean的名字(xml中配置了dataSourceLocal,dataSource137) public static void setDBType(String dbType) { contextHolder.set(dbType); } //获取当前使用的数据源 public static String getDBType() { return ((String) contextHolder.get()); } //使用默认数据源 public static void clearDBType() { contextHolder.remove(); } }

4.实际调用用的类

package com.simple.common.dataconfig;//设置使用的数据源,获取使用的数据源public class DataSourceGetSet { // Oracle数据库 private static final String WEBADMORACLE = "dataSource137"; // 本地数据源--MySQL数据库 private static final String LOCALMYSQL = "dataSourceLocal"; /** * 使用137环境数据源 * @return 配置成功返回true */ public static boolean SetDataSourceTO137() { DataSourceContextHolder.setDBType(WEBADMORACLE); String DBType = DataSourceContextHolder.getDBType(); if (WEBADMORACLE.equals(DBType)) { return true; } return false; } /** * 使用本地环境数据源 * @return 配置成功返回true */ public static boolean SetDataSourceTOLocal() { DataSourceContextHolder.setDBType(LOCALMYSQL); String DBType = DataSourceContextHolder.getDBType(); if (LOCALMYSQL.equals(DBType)) { return true; } return false; } /** * 获取当前数据源名称 */ public static String GetDBType(){ return DataSourceContextHolder.getDBType(); }}

如果需要配置更多数据源,同理可知!


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表