spring boot 动态数据源嵌套使用数据源切换报错的问题

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);
第一次查询之后,加上这一句代码,改变本地内存变量中的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值