多数据源问题很常见,只要是项目中,需要操作不同数据库中的表,就需要用到多数据源。
而多数据源的解决方案有很多,可以在配置文件中手动配置不同的dataSource,将不同的dataSource传给不同的SessionFactory来实现,但是这种方式不能在程序中动态的切换数据源,如果有需要动态切换的话,可以利用Spring2.X提供的AbstractRoutingDataSource很方便的实现:
1、首先配置多个datasource:
<bean id="dataSource1" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost/test?characterEncoding=utf8" />
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
<bean id="dataSource2" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl" value="jdbc:mysql://localhost/test2?characterEncoding=utf8" />
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
2、写一个DynamicDataSource类继承AbstractRoutingDataSource,并实现determineCurrentLookupKey方法