1 因爲項目須要,須要將不一樣來源的數據存入不一樣的數據庫,因此須要根據入參的信息動態切換數據源java
項目core層採用了spring+mybitas 方式進行架構spring
1 在spring的配置中定義兩個數據源 sql
2建立一個新的類 MultiDataSource數據庫
public class MultiDataSource extends AbstractRoutingDataSource {session
private static final ThreadLocal<String> dataSourceKey = new InheritableThreadLocal<String>(); public static void setDataSourceKey(String dataSource) { dataSourceKey.set(dataSource); } @Override protected Object determineCurrentLookupKey() { return dataSourceKey.get(); }
}架構
這個類須要繼承 AbstractRoutingDataSource
而且重寫 determineCurrentLookupKey方法
3 在spring 的配置文件中新增配置ide
<map key-type="java.lang.String"> <entry value-ref="dataSource1" key="dataSource1"></entry> <entry value-ref="dataSource2" key="dataSource2"></entry> </map>
4 將配置的dataSource 添加到sessionFactory 中
code
5 將sessionFactory 注入到sqlSession中
繼承
6 動態切換數據源決定採用spring-aop 添加切點 去進行動態切換get
6.1 新建數據切換類 public class DataBaseAop {