mybatis-plus多数据源代替@DS

在使用mybatis-plus的多数据源配置是,可以通过@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.panziye.com/java/4684.html
本文《mybatis-plus多数据源代替@DS》由网赚联盟( wangzhuan.org.cn )整理或原创,感谢您的阅读。

随机文章

站长导航
友情链接交换
搜素引擎算法
关键词排名优化
网站内容优化
GEO培训
SEO小小课堂网
友情链接交换

百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:用户投稿,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/239765.html