SpringBoot轻松实现多数据源切换
    		       		warning:
    		            这篇文章距离上次修改已过424天,其中的内容可能已经有所变动。
    		        
        		                
                
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
 
public class DynamicDataSource extends AbstractRoutingDataSource {
    private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();
 
    @Override
    protected Object determineCurrentLookupKey() {
        return contextHolder.get();
    }
 
    public static void setCurrentDb(String dbType) {
        contextHolder.set(dbType);
    }
 
    public static String getCurrentDb() {
        return contextHolder.get();
    }
 
    public static void clearCurrentDb() {
        contextHolder.remove();
    }
}在Spring Boot中,可以通过实现AbstractRoutingDataSource来轻松实现多数据源的动态切换。上述代码定义了一个DynamicDataSource类,它继承了AbstractRoutingDataSource并提供了一些静态方法来设置和清除当前线程使用的数据源标识。在determineCurrentLookupKey方法中,它返回当前线程绑定的数据源标识,以此来进行数据源的切换。
评论已关闭