最近因为项目需要在做两个项目间数据同步的需求,具体是项目1的数据通过消息队列同步到项目2中,因为这个更新操作还涉及到更新多个库的数据,所以就需要多数据源切换的操作。下面就讲讲在Spring中如何进行数据源切换。这里是使用AbstractRoutingDataSource类来完成具体的操作,AbstractRoutingDataSource是Spring2.0后增加的。

大学生就业培训,高中生培训,在职人员转行培训,企业团训

实现数据源切换的功能就是自定义一个类扩展AbstractRoutingDataSource抽象类,其实该相当于数据源DataSourcer的路由中介,可以实现在项目运行时根据相应key值切换到对应的数据源DataSource上。先看看AbstractRoutingDataSource的源码:

大学生就业培训,高中生培训,在职人员转行培训,企业团训

public abstract class AbstractRoutingDataSource extends AbstractDataSource implements InitializingBean {    /* 只列出部分代码 */
    private Map<Object, Object> targetDataSources;    private Object defaultTargetDataSource;    private boolean lenientFallback = true;    private DataSourceLookup dataSourceLookup = new JndiDataSourceLookup();    private Map<Object, DataSource> resolvedDataSources;    private DataSource resolvedDefaultDataSource;

    @Override    public Connection getConnection() throws SQLException {       &n