这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
动态切换数据源:
springboot提供了一个AbstractRoutingDataSource类。我们可以实现一个类继承AbstractRoutingDataSource并且determineCurrentLookUpKey()方法。
具体步骤:
数据源配置
1 | yaml复制代码spring: |
编写 DataSourceContextHolder设置和保存当前线程使用的数据源
1 | typescript复制代码public class DataSourceContextHolder { |
编写DynamicDataSource
1 | scala复制代码public class DynamicDataSource extends AbstractRoutingDataSource { |
配置类
1 | less复制代码/** |
1 | java复制代码@EnableTransactionManagement |
利用拦截器拦截请求,查看请求参数是否存在某种参数(代表需要切换数据源,不存在则为默认数据源)。也可以使用AOP的方法作用于某个方法,
利用自定义注解配置需要切换的数据源,在切面那里只需利用反射得到对应的数据源在进行切换。
1 | java复制代码/** |
配置拦截器
1 | java复制代码@Configuration |
本文转载自: 掘金