java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > @DS注解的使用,动态数据源,事务

@DS注解的使用,动态数据源,事务详解

作者:凯酱

在项目中使用多数据源时,可以借助苞米豆的dynamic-datasource-spring-boot-starter进行配置,首先需引入相应的jar包,并在application.yml中设置主从数据源,其中一般选择master作为默认数据源,在实现类中通过@DS注解指定数据源

@DS注解的使用,动态数据源,事务

有时,在一个项目中会用到多数据源,

此时可以使用苞米豆的dynamic-datasource-spring-boot-starter

首先,引入jar包

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

在Springboot的application.yml中进行配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test2?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: root
    dynamic:
      primary: master
      datasource:
        master:
          url: jdbc:mysql://localhost:3306/test2?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root
          password: root
        sub:
          url: jdbc:mysql://localhost:3306/test2?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8
          driver-class-name: com.mysql.cj.jdbc.Driver
          username: root1
          password: root1

其中配置了两个数据源,mastersub,其中选择master作为默认数据源(对应primary配置);

若想使用sub作为部分代码的数据源,可在ServiceImpl做如下配置:

在使用@DS注解时

有如下注意事项:

  1. 不能使用事务,否则数据源不会切换,使用的还是第一次加载的数据源;
  2. 第一次加载数据源之后,第二次、第三次…操作其它数据源,如果数据源不存在,使用的还是第一次加载的数据源;
  3. 数据源名称不要包含下划线,否则不能切换。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文