行业资讯 2025年08月6日
0 收藏 0 点赞 910 浏览 979 个字
摘要 :

在使用mybatis–plus的多数据源配置是,可以通过@DS注解轻松进行切换,该注解可以用在方法或者类上,但是如果在类似Configuration配置类中要动态切换从apollo中加载……

在使用mybatisplus的多数据源配置是,可以通过@DS注解轻松进行切换,该注解可以用在方法或者类上,但是如果在类似Configuration配置类中要动态切换从apollo中加载过来的多数据源时,该怎么做呢?

类似源代码如下,但是这里的数据源默认会使用primary的数据源,不能通过@DS进行切换(如果你有方法也可以留言!)

@Configuration
public class ElectionConfiguration {

    @Bean
    public Election election(DataSource dataSource) throws ElectionException {
        return new DistributedElection(ClusterType.SDA_OPC.getCode(), dataSource);
    }

}

但现在的需求就是要改变这里的dataSource为自己想要的那个数据源,比如我这里就想让它变成slave1数据源,该怎么做?潘老师经过debug和翻看源码,发现可以通过如下方式进行实现:

@Configuration
public class ElectionConfiguration {

    @Bean
    public Election election(DataSource dataSource) throws ElectionException {

        DynamicRoutingDataSource dynamicRoutingDataSource = (DynamicRoutingDataSource)dataSource;
        DataSource slave1= dynamicRoutingDataSource.getDataSource("slave1");
        return new DistributedElection(ClusterType.SDA_OPC.getCode(), slave1);
    }

}

值得一提的是,动态数据源使用的是DynamicRoutingDataSource类,需要进行强转,强转完之后可以通过 getDataSource方法传入数据源名称就可以获取到对应的额数据源,其实@DS的原理就是这样的,这里的数据源名称就是@DS的参数名称。

ok,以上就是mybatis-plus多数据源使用手工方式代替@DS来进行数据源切换的,如果你有更好的方案,可以留言!

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8211.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号