使用Spring配置多数据源

一、工作原理

利用Spring提供的AbstractRoutingDataSource抽象类配置多个数据源。在运行时利用SpringAOP 在事物开启之前,根据某个key值动态的改变数据源。

二、配置多个数据源

1.配置第一个数据源

使用Spring配置多数据源

2.配置第二个数据源

使用Spring配置多数据源

3.配置properties文件

使用Spring配置多数据源


三、java代码

1.扩展Spring的AbstractRoutingDataSource抽象类,实现动态数据源。

使用Spring配置多数据源

2.AbstractRoutingDataSource 抽象类增加一个线程安全的ThreadLocal

使用Spring配置多数据源

3.配置动态数据源

将DynamicDataSource Bean加入到Spring的上下文xml配置文件中去,同时配置DynamicDataSource的targetDataSources(多数据源目标)属性的Map映射

使用Spring配置多数据源

4.配置sqlSessionFactory 工厂

使用Spring配置多数据源

5.通过SpringAOP 动态改变每个service 所使用的数据源

Ⅰ写切入方法

写一个类实现MethodInterceptor 接口,实现invoke 方法

使用Spring配置多数据源

Ⅱ配置文件

使用Spring配置多数据源

使用Spring配置多数据源

Ⅲ使用

对需要更换数据源的业务方法增加dataSource注解指定选用数据源

使用Spring配置多数据源

Datasource.java 源码

使用Spring配置多数据源