开发喵星球

若依微服务中的多数据源集成(298)

在开发过程中,常常会遇到需要在一个应用中访问多个数据库的场景。若依微服务版本通过使用 dynamic-datasource 动态多数据源组件,可以方便地实现这一需求。

1. 添加依赖

首先,在对应的业务模块 pom.xml 文件中,添加 ruoyi-common-datasource 依赖,以便使用多数据源组件。

<!-- 若依通用数据源依赖 -->
<dependency>
    <groupId>com.ruoyi</groupId>
    <artifactId>ruoyi-common-datasource</artifactId>
</dependency>

2. 配置数据源

ruoyi-system 模块为例,使用 druid 数据库连接池配置主从数据库。其他数据源的配置可以参照组件文档进行。

# Spring 配置
spring: 
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
    dynamic:
      druid:
        initial-size: 5
        min-idle: 5
        maxActive: 20
        maxWait: 60000
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECT 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        filters: stat,wall,slf4j
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
          # 主数据库配置
          master:
            driver-class-name: com.mysql.cj.jdbc.Driver
            url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
            username: root
            password: password
          # 从数据库配置
          # slave:
            # url: 
            # username: 
            # password: 
            # driver-class-name: 

3. 定义数据源注解

ruoyi-common-datasource 提供了数据源注解,用于指定使用的数据库源。项目默认提供了主库 (Master) 和从库 (Slave) 的注解,直接使用即可。根据实际需求,你也可以定义更多的数据源注解。

4. 使用数据源注解

在需要切换数据源的方法或类上,使用对应的数据源注解。这样,方法在执行时会自动切换到指定的数据源。

@Master
public void insertA()
{
    return xxxxMapper.insertXxxx();
}

@Slave
public void insertB()
{
    return xxxxMapper.insertXxxx();
}

手动切换数据源

在某些场景下,可能需要手动进行数据源的切换,可以使用以下代码进行切换:

DynamicDataSourceContextHolder.push("slave"); // 手动切换到从库
// 执行业务逻辑
DynamicDataSourceContextHolder.clear(); // 清除数据源上下文,恢复到默认数据源

通过以上步骤,即可在若依微服务中实现多数据源的集成和切换,满足复杂业务场景的需求。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-08-13 15:27:31 阅读量:113
<<   >>


powered by kaifamiao