数据源路由器
1.编写一个工具类获取数据源编号key
package com.bojoy.util;
public class MyDataSourceSwitch {
private static ThreadLocal<String> key = new ThreadLocal<String>();
// 这里用的是ThreadLocal<String>的key是为了避免多并发时多个用户对同一个
// key修改会发生冲突,所以此处用了线程本地化的技术来解决多并发问题
public static String getKey(){
return key.get();
}
public static void setKey(String key_in){
key.set(key_in);
}
}
2. 编写MyRoutingDataSource类,继承AbstractRoutingDataSources,
重写determineCurrentLookupKey方法
package com.bojoy.util;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class MyRoutingDataSource extends AbstractRoutingDataSource{
@Override
protected Object determineCurrentLookupKey() {
// System.err.println("datasource-key:" + MyDataSourceSwitch.getKey());
return MyDataSourceSwitch.getKey();
}
}
3.将你重写的子类作为数据源路由器代替原来容器中的数据源,配置给spring容器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XML