Spring配置多数据源切换

时间:2021-05-20

多数据源切换

db.properties

#MySQLjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=admin#定义初始连接数initialSize=0#定义最大连接数maxActive=1000#定义最大空闲maxIdle=20#定义最小空闲minIdle=1#定义最长等待时间maxWait=60000#MySQL# driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassNamejdbc.driver1=com.mysql.jdbc.Driverjdbc.url1=jdbc:mysql://localhost:3306/test1?allowMultiQueries=true&autoReconnect=true&characterEncoding=utf-8jdbc.username1=rootjdbc.password1=admin# 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时initialSize1=0# 最大连接池数量maxActive1=1000#定义最小空闲minIdle1=1# 获取连接时最大等待时间,单位毫秒。配置了maxWait之后, # 缺省启用公平锁,并发效率会有所下降, # 如果需要可以通过配置useUnfairLock属性为true使用非公平锁。maxWait1=60000# druid 监控# 属性类型是字符串,通过别名的方式配置扩展插件, # 常用的插件有: # 监控统计用的filter:stat # 日志用的filter:log4j # 防御sql注入的filter:wallfilters1=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占用内存过多的问题, # 可以把这个数值配置大一些,比如说100maxOpenPreparedStatements1=-1

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://.ys.dbConfig; /** *@ Title MultipleDataSourceHandler.java *@ description: 多数据源Handler*@ time 创建时间:2018年8月25日 上午10:52:12 **/public class MultipleDataSourceHandler { private static ThreadLocal<String> routeKey = new ThreadLocal<String>(); /** * @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”);

总结

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

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章