package com.miaxis.framework.datasource;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

import javax.sql.DataSource;
import java.util.Map;

/**
 * 动态数据源
 * 
 * @author miaxis
 */
public class DynamicDataSource extends AbstractRoutingDataSource
{
    public DynamicDataSource(DataSource defaultTargetDataSource, Map<Object, Object> targetDataSources)
    {
        //设置默认数据源(主数据源)
        super.setDefaultTargetDataSource(defaultTargetDataSource);
        //设置(从数据源-集合)
        super.setTargetDataSources(targetDataSources);
        ////将数据源分别进行复制到 resolvedDataSources 和 resolvedDefaultDataSource中
        super.afterPropertiesSet();
    }

    /**
     * 返回需要使用的DataSource的key值，然后根据这个key从 resolvedDataSources
     *  这个map里取出对应的 DataSource，如果找不到，则用默认的 resolvedDefaultDataSource。
     * @return
     */
    @Override
    protected Object determineCurrentLookupKey()
    {
        return DynamicDataSourceContextHolder.getDataSourceType();
    }
}