首页 > 科技 >

🌸Spring Boot 实现动态数据源切换🌿

发布时间:2025-03-24 23:44:13来源:

在开发中,有时我们需要根据不同场景切换不同的数据库连接,比如多租户架构或读写分离。这时,`AbstractRoutingDataSource` 是一个非常实用的工具!它允许我们在运行时动态选择数据源。

首先,继承 `AbstractRoutingDataSource` 并重写 `determineCurrentLookupKey()` 方法,这个方法负责返回当前线程的数据源标识。例如:

```java

public class DynamicDataSource extends AbstractRoutingDataSource {

@Override

protected Object determineCurrentLookupKey() {

return DynamicContextHolder.getDataSourceType();

}

}

```

接着,在配置类中设置主数据源和目标数据源,并注入到 `DynamicDataSource` 中:

```java

@Bean

public DataSource dataSource() {

DynamicDataSource dynamicDataSource = new DynamicDataSource();

Map targetDataSources = new HashMap<>();

targetDataSources.put("primary", primaryDataSource());

targetDataSources.put("secondary", secondaryDataSource());

dynamicDataSource.setTargetDataSources(targetDataSources);

dynamicDataSource.setDefaultTargetDataSource(primaryDataSource());

return dynamicDataSource;

}

```

最后,通过 `DynamicContextHolder` 设置当前线程的数据源类型即可完成切换,比如 `DynamicContextHolder.setDataSourceType("secondary")`。

💡 小贴士:确保切换逻辑是线程安全的,避免不同线程间的干扰。✨

这样,你就可以轻松实现动态数据源切换啦!💪

免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。