Spring配置多数据源切换

多数据源切换

创新互联服务项目包括榆树网站建设、榆树网站制作、榆树网页制作以及榆树网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,榆树网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到榆树省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

db.properties

#MySQL
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=admin
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=1000
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
#MySQL
# driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
jdbc.driver1=com.mysql.jdbc.Driver
jdbc.url1=jdbc:mysql://localhost:3306/test1?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf-8
jdbc.username1=root
jdbc.password1=admin
# 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
initialSize1=0
# 最大连接池数量
maxActive1=1000
#定义最小空闲
minIdle1=1
# 获取连接时最大等待时间,单位毫秒。配置了maxWait之后, 
# 缺省启用公平锁,并发效率会有所下降, 
# 如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
maxWait1=60000
# druid 监控
# 属性类型是字符串,通过别名的方式配置扩展插件, 
# 常用的插件有: 
# 监控统计用的filter:stat 
# 日志用的filter:log4j 
# 防御sql注入的filter:wall
filters1=stat,log4j
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis1=60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis1=300000
# 建议配置为true,不影响性能,并且保证安全性。 
# 申请连接的时候检测,如果空闲时间大于 
# timeBetweenEvictionRunsMillis, 
# 执行validationQuery检测连接是否有效。
testWhileIdle1=true
# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnBorrow1=false
# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testOnReturn1=false
# 是否缓存preparedStatement,也就是PSCache。
# PSCache对支持游标的数据库性能提升巨大,比如说oracle。 
# 在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
# 作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录, 
# 该应该是支持PSCache。
poolPreparedStatements1=false
# 要启用PSCache,必须配置大于0,当大于0时, 
# poolPreparedStatements自动触发修改为true。 
# 在Druid中,不会存在Oracle下PSCache占用内存过多的问题, 
# 可以把这个数值配置大一些,比如说100
maxOpenPreparedStatements1=-1

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

  
   
  
  
    
    
    
    
  
  
  
    
      
        classpath:db.properties
      
    
  
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  
  
   
     
   
   
     
   
  
  
    
    
    
      
        
        
      
    
  
  
  
    
    
    
    
    
  
  
  
    
  
  
  
  
    
  
  
  

创建MultipleDataSource.java

package com.ys.dbConfig;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class MultipleDataSource extends AbstractRoutingDataSource{
  @Override
  protected Object determineCurrentLookupKey() {
    return MultipleDataSourceHandler.getRouteKey();
  }
}

创建MultipleDataSourceHandler.java

package com.ys.dbConfig; 
/** 
*@ Title MultipleDataSourceHandler.java 
*@ description: 多数据源Handler
*@ time 创建时间:2018年8月25日 上午10:52:12 
**/
public class MultipleDataSourceHandler {
  private static ThreadLocal routeKey = new ThreadLocal();
  /**
   * @Title: getRouteKey 
   * @Description: 获取当前线程的数据源路由的key
   * @param @return
   * @return String
   * @date createTime:2018年8月27日上午10:34:52
   */
  public static String getRouteKey(){
    return routeKey.get();
  }
  /**
   * @Title: setRouteKey 
   * @Description: 绑定当前线程数据源路由的key 使用完成后必须调用removeRouteKey()方法删除
   * @param @param key
   * @return void
   * @date createTime:2018年8月27日上午10:35:03
   */
  public static void setRouteKey(String key){
    routeKey.set(key);
  }
  /**
   * @Title: removeRouteKey 
   * @Description: 删除与当前线程绑定的数据源路由的key
   * @return void
   * @date createTime:2018年8月27日上午10:35:31
   */
  public static void removeRouteKey(){
    routeKey.remove();
  }
}

切换数据源

MultipleDataSourceHandler.setRouteKey(“dataSource1”);

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对创新互联的支持。如果你想了解更多相关内容请查看下面相关链接


分享标题:Spring配置多数据源切换
本文网址:http://pwwzsj.com/article/ipjecj.html