本文基于Spring 4.1.6 RELEASE源码 进行分析。
先看看之前咱们在spring-mybatis.xml文件中配置的动态数据源,如下:
<bean id="dataSource" class="com.ricky.codelab.spring.ds.DynamicRoutingDataSource">
<property name="targetDataSources">
<map key-type="com.ricky.codelab.spring.ds.RouteStrategy">
<entry key="slave1" value-ref="slave1DataSource"/>
<entry key="slave2" value-ref="slave2DataSource"/>
</map>
</property>
<!-- 默认目标数据源为主库数据源 -->
<property name="defaultTargetDataSource" ref="masterDataSource"/>
</bean>
DynamicRoutingDataSource 继承自AbstractRoutingDataSource 类,代码如下: