很多情况下,希望应用程序搭建一套,为每个用户建立一个私有的数据库,所有程序使用一套.
开动吧:
一、 首先继承AbstractRoutingDataSource,从名称上看为抽象路由数据源,就是spring为提供动态数据库而设定的。在这个类中,需要重写determineCurrentLookupKey这个方法,这个方法就是动态从
private Map targetDataSources(AbstractRoutingDataSource类里面的属性)里面获取对应的数据源import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@Configuration
public class DynamicDataSource extends AbstractRoutingDataSource {
/**
* 每次请求动态请求哪一个数据源
* @return
*/
@Override
protected Object determineCurrentLookupKey() {
return DataSourceHolder