• Springboot多数据源配置详解


    Springboot多数据源配置详解

    概念

    一般来说,我们正常的业务只涉及一个数据源,在特定的业务场景中需要使用多个数据源的情况,就需要配置多个数据源来满足特定的业务需求。本文介绍的是:springboot 整合 dynamic-datasource 来实现多数据源的配置使用。注意:此处可以整合多种不同类型的数据库。

    配置

    1、引入 pom 依赖(主要依赖)

    
        com.baomidou
        dynamic-datasource-spring-boot-starter
        3.5.0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、yml 配置文件

    server:
      port: 8081
    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        dynamic:
          # 指定默认数据源
          primary: master
          # true:找不到数据源报错,false:找不到数据源则使用数据源
          strict: false
          datasource:
            master:
              driver-class-name: com.mysql.jdbc.Driver
              url: jdbc:mysql://localhost:3306/db2021?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nuLlCatalogMeansCurrent=true
              username: root
              password: 123456
              
            flowable:
              driver-class-name: com.mysql.jdbc.Driver
              url: jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nuLlCatalogMeansCurrent=true
              username: root
              password: 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3、多数据源配置类

    import com.alibaba.druid.pool.DruidDataSource;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.boot.jdbc.DataSourceBuilder;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    
    import javax.sql.DataSource;
    
    @Configuration
    public class DataSourceConfig {
    
    
        @Bean(name = "flowableDataSource")
        @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.flowable")
        public DataSource flowableDataSource() {
            return DataSourceBuilder.create()
                    .type(DruidDataSource.class)
                    .build();
        }
    
        @Bean(name = "masterDataSource")
        @Primary
        @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master")
        public DataSource masterDataSource() {
            return DataSourceBuilder.create()
                    .type(DruidDataSource.class)
                    .build();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    多数据源使用

    注:@DS可以放在类上 或 方法上

        /*主数据,配置文件中指令可以不写,默认就是主数据源*/
        @DS("master")
        public void doOperationWithMaster(){
            //do something with master data source
        }
        
        /*flowable*/
        @DS("flowable")
        public void doOperationWithOther(){
            //do something with other data source
        }
        
        /*多数据源交叉使用,数据源事务*/
        @DSTransactional
        public void doOperation(){
            //do something 
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    基于SSM的垃圾科普设计与实现-计算机毕业设计源码+LW文档
    外汇天眼:经济衰退无阻加息,欧美货币政策齐收紧
    不知道用什么图表展示数据?看这份图表选择指南就够了
    【推荐系统】DeepFM模型
    观后感《经济逆境中,普通人的机会在哪里?》
    车载电子电器架构 —— 车辆模式管理
    从零创建VUE注册页面实现与后端交互
    【无标题】
    Eavesdropping(窃听机制)在机器学习中的用法
    Vue3自定义指令
  • 原文地址:https://blog.csdn.net/m0_52789121/article/details/126596627