spring boot 动态数据源嵌套使用数据源切换报错的问题
看代码:
@Override
@DataSource(name = DSEnum.DATA_SOURCE_BASE) //base
public void ruleTest() {
List<SysUser> userList = sysUserService.findAll(); //使用core
userList.forEach(System.out::println);
// DataSourceContextHolder.setDataSourceType(DSEnum.DATA_SOURCE_BASE);
List<Rule> ruleServiceAll = this.findAll(); //base
ruleServiceAll.forEach(System.out::println);
// //数据源已经从新设置
Rule rule = this.selectById(1); //core
System.out.println(rule);
}
数据源嵌套使用,动态切换依赖于ThreadLocal,调用一个方法切换一个数据源 (@DataSource 注解)进入方法使用的是base,第一次操作数据库使用 core 方法执行完,销毁数据源 数据源再次使用默认的core,第二次从base库里面查,使用的确是core 数据源,所以报错,
结局方法
DataSourceContextHolder.setDataSourceType(DSEnum.DATA_SOURCE_BASE);
第一次查询之后,加上这一句代码,改变本地内存变量中的值