在"架构序列一"中实际已经在配置文件中增加了动态数据源,在此作者将对如何使用动态数据源做出详细的阐述说明。
首先打开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
详细请关注作者订阅号查看相关内容: