SpringBoot轻松实现多数据源切换
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
方法中,它返回当前线程绑定的数据源标识,以此来进行数据源的切换。
评论已关闭