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 {