架构序列二:动态数据源的使用的三种方式

在"架构序列一"中实际已经在配置文件中增加了动态数据源,在此作者将对如何使用动态数据源做出详细的阐述说明。

首先打开yml文件的配置,作者以local环境举例:

 

实际数据源可配置N个,mysql,oracle,db2......等等都可使用,只要大家记得一定要增加对应的jar包即可,请看如下图:

 

目前证明已经配置好了,那动态数据源具体是来源于哪个工具呢?具体怎么使用呢?

动态数据源来源于苞米豆的dynamic-datasource-spring-boot-starter

源码:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>${dynamic-datasource.version}</version>
</dependency>

 

 

目前支持三种使用方式(案例作者都会写出来)

方式一:代码写入方式

只要想切什么到哪个数据源,就push哪个数据源即可,clear掉后整个服务还会继续使用默认数据源。

方式二:注解方式

此方式需要配置在方法体上,所以很好理解,整个方法中的所有sql相关操作都会使用"test-A"数据源。

 

方式三:注解方式

方式三则是配置整个类中,同样,整个类中所有sql相关操作都会使用"test-B"数据源。

 

需要注意的是:如果在某个类中增加了数据源(方式三),同时在方法中也增加了数据源(方式二),此时小单元会覆盖大单元,也就是在方法中会使用方式二的数据源,其他方法则使用方式三的数据源

 

同样,方式三和方式一同时存在的话,方式一会覆盖掉方式三。

 

作者之前也想过,既然有方式二了,方式一还有存在的必要吗?

后来经过实际使用发现,还真不一样。

比如

场景一:当前整个实现类中都只会查某一个需要指定的数据源,则直接考虑方式三即可。

场景二:当前整个实现类会查某一个需要指定的数据源或者默认数据源(master,不需要配置),同时此实现类中某一个方法需要查另一个数据源,则考虑使用 方式三 + 方式二 即可。

场景三:如果此实现类中某一个方法需要查多个数据源,也就是本身有多个sql相关操作,并且查询的数据源也不一样,那么此时就需要使用方式一了。

 

作者目前一直持续在使用,并没有发现问题,所以还请大家放心使用。

 

整套架构初步规划包含技能点:

    springcloud、springboot、mybatis、分环境打包、mybatis-plus、动态数据源、druid、增删改查一键生成、gateway网关、feign的使用、熔断机制、如何防止雪崩、分布式+集群、注册中心:zookeeper+zkui和nacos、一个项目如何进行zk和nacos同时使用、动态配置:一个配置,所有集群节点共同热点使用

 

获取源码:https://github.com/feeyanna/FlyingCoding.git

详细请关注作者订阅号查看相关内容:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值