springboot框架下配置多数据源

本文介绍了如何在springboot框架中配置多数据源,使用dynamic-datasource-spring-boot-starter启动器,详细讲解了引入依赖、配置数据源及@DS注解的使用方法,同时提醒在配置多数据源时需避免与druid默认配置冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot框架下配置多数据源

简介

dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。下文介绍如何配置springboot框架下的多数据源。

使用方法

  1. 引入dynamic-datasource-spring-boot-starter。
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
      <version>2.5.4</version>
    </dependency>
    
  2. 配置数据源。
    spring:
      datasource:
        dynamic:
          primary: master #设置默认的数据源或者数据源组,默认值即为master
          strict: false #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候回抛出异常,不启动会使用默认数据源.
          datasource:
            master:
              url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
              username: root
              password: 123456
              driver-class-name: com.mysql.jdbc.Driver
            slave_1:
              url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
              username: root
              password: 123456
              driver-class-name: com.mysql.jdbc.Driver
            slave_2:
              url: ENC(xxxxx) # 内置加密,使用请查看详细文档
              username: ENC(xxxxx)
              password: ENC(xxxxx)
              driver-class-name: com.mysql.jdbc.Driver
              schema: db/schema.sql # 配置则生效,自动初始化表结构
              data: db/data.sql # 配置则生效,自动初始化数据
              continue-on-error: true # 默认true,初始化失败是否继续
              separator: ";" # sql默认分号分隔符
              
           #......省略
           #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
    
    # 多主多从                      纯粹多库(记得设置primary)                   混合配置
    spring:                               spring:                               spring:
      datasource:                           datasource:                           datasource:
        dynamic:                              dynamic:                              dynamic:
          datasource:                           datasource:                           datasource:
            master_1:                             mysql:                                master:
            master_2:                             oracle:                               slave_1:
            slave_1:                              sqlserver:                            slave_2:
            slave_2:                              postgresql:                           oracle_1:
            slave_3:                              h2:                                   oracle_2:
    
  3. 使用 @DS 切换数据源。
    @DS 可以注解在方法上和类上,同时存在方法注解优先于类上注解。强烈建议只注解在service实现上。如下图所示。(@DS注解标注从哪个数据源执行sql,如果不加则从默认的数据源执行sql。)
    在这里插入图片描述
注解结果
没有@DS默认数据源
@DS(“dsName”)dsName可以为组名也可以为具体某个库的名称

常见问题

在这里插入图片描述
注意:我们设置了多数据源,之前的数据库设置需要删除,保留多数据源设置,如果出现上图的启动报错一般来说是因为用户设置了druid配置数据库连接导致的,这会导致多数据源无效,我们只需要在配置文件里面设置如下配置即可,也就是说不走druid默认配置。

spring:
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
# 为了某些版本的springboot  @SpringBootApplication(exclude={DataSourceAutoConfiguration.class}) 无法生效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值