您当前的位置:首页 > 电脑百科 > 程序开发 > 框架

SpringBoot集成多数据源

时间:2021-04-27 11:08:24  来源:今日头条  作者:蒙奇奇1017

一、多数据源集成简介

多数据源集成使用
dynamic-sring-boot-starter,github地址:https://github.com/baomidou/dynamic-datasource-spring-boot-starter,详细使用可以参考github地址。

二、BDP框架集成多数据源步骤

  • 1、pom.xm文件引入dynamic-datasource-spring-boot-starter maven依赖。maven依赖配置如下
 <!-- https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter -->
        <!--动态数据源配置-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
  • 2、在Application.yml,将spring.profiles.active改为system,dynamicDataapplication.yml修改配置可以如下:
spring:
  profiles:
    #    切换配置文件
    active: system,dynamicData
  • 3、在application-dynamicData.yml,设置主数据源、从数据源数据库配置信息,可以配置多个从数据源。

关键配置如下:

spring:
  datasource:
      dynamic:
        druid: #以下是全局默认值,可以全局更改
          # 下面为连接池的补充设置,应用到上面所有数据源中
          # 初始化大小,最小,最大
          initialSize: 1
          minIdle: 3
          maxActive: 100
          # 配置获取连接等待超时的时间
          maxWait: 6000
          # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
          timeBetweenEvictionRunsMillis: 1000
          # 配置一个连接在池中最小生存的时间,单位是毫秒
          minEvictableIdleTimeMillis: 30000
          validationQuery: select 'x' FROM DUAL
          testWhileIdle: true
          testOnBorrow: false
          testOnReturn: false
          # 打开PSCache,并且指定每个连接上PSCache的大小
          poolPreparedStatements: true
          maxPoolPreparedStatementPerConnectionSize: 20
          # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
          filters: stat,wall,slf4j
          # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
          connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        primary: master #设置默认的数据源或者数据源组,默认值即为master
        strict: true #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
        datasource:
          master:
            url: jdbc:MySQL://localhost:3306/dbname1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
            username: XXXX
            password: XXXX
            driver-class-name: com.mysql.cj.jdbc.Driver
            type: com.alibaba.druid.pool.DruidDataSource
          # strict为false时候,可以不配置从数据源
          slave_1:
            url: jdbc:mysql://localhost:3306/dbname2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
            username: xxxx
            password: xxxx
            driver-class-name: com.mysql.jdbc.Driver
            type: com.alibaba.druid.pool.DruidDataSource
#   集成多数据源,需要排除druid默认配置,从动态数据源获取druid配置
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure

三、代码中使用多数据源

  1. 使用 @DS 切换数据源。@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。

注解

结果

没有@DS

使用默认数据库

@DS("dbName")

dbName可以为组名也可以为具体某个库的名称

代码使用实例

建议在service层类上或者方法添加@DS("dsName"),可以用来指定数据库连接那个数据库。

@RestController
@RequestMapping("/dbTest")
public class DynamicDatasourceTest {
    @Autowired
    private UserServiceImpl userService;

    @GetMapping("/list")
    public ResponseResult<List<SAuUser>> list() {
        final List<SAuUser> list = userService.selectAll();
        return  ResponseResult.renderSuccess(list, "获取用户信息成功");
    }
}

//建议在service层类上或者方法添加@DS("dsName"),可以用来指定数据库连接那个数据库
@Service
@DS("slave_1")  // slave_1 多数据源从库名称 ,如果不使用@DB注解,默认连接主库
class UserServiceImpl {
    @Autowired
    private ISAuUserService userService;

    public List<SAuUser> selectAll() {
        final List<SAuUser> list = userService.list();
        return list;
    }

}


Tags:多数据源   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
部署mysql数据源文档:CentOS7 yum方式安装MySQL5.7.note链接:http://note.youdao.com/noteshare?id=38744e6dee57ec85864991af48440537 [mysqld] log-bin=mysql-bin # 开启 bi...【详细内容】
2021-06-25  Tags: 多数据源  点击:(142)  评论:(0)  加入收藏
一、多数据源集成简介多数据源集成使用 dynamic-sring-boot-starter,github地址:https://github.com/baomidou/dynamic-datasource-spring-boot-starter,详细使用可以参考githu...【详细内容】
2021-04-27  Tags: 多数据源  点击:(239)  评论:(0)  加入收藏
01 前言随着应用用户数量的增加,相应的并发请求的数量也会跟着不断增加,慢慢地,单个数据库已经没有办法满足我们频繁的数据库操作请求了,在某些场景下,我们可能会需要配置多个数...【详细内容】
2021-03-11  Tags: 多数据源  点击:(249)  评论:(0)  加入收藏
1 概述在实际业务开发中通常会在单个应用中通过 分库分表 或者 读写分离的方式来提供应用的读写性能。在具体的开发中有很多方式: 通过不同的 mapper,映射到不同的 mybatis 源...【详细内容】
2020-08-05  Tags: 多数据源  点击:(46)  评论:(0)  加入收藏
▌简易百科推荐
近日只是为了想尽办法为 Flask 实现 Swagger UI 文档功能,基本上要让 Flask 配合 Flasgger, 所以写了篇 Flask 应用集成 Swagger UI 。然而不断的 Google 过程中偶然间发现了...【详细内容】
2021-12-23  Python阿杰    Tags:FastAPI   点击:(6)  评论:(0)  加入收藏
文章目录1、Quartz1.1 引入依赖<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.2</version></dependency>...【详细内容】
2021-12-22  java老人头    Tags:框架   点击:(11)  评论:(0)  加入收藏
今天来梳理下 Spring 的整体脉络啦,为后面的文章做个铺垫~后面几篇文章应该会讲讲这些内容啦 Spring AOP 插件 (了好久都忘了 ) 分享下 4ye 在项目中利用 AOP + MybatisPlus 对...【详细内容】
2021-12-07  Java4ye    Tags:Spring   点击:(14)  评论:(0)  加入收藏
&emsp;前面通过入门案例介绍,我们发现在SpringSecurity中如果我们没有使用自定义的登录界面,那么SpringSecurity会给我们提供一个系统登录界面。但真实项目中我们一般都会使用...【详细内容】
2021-12-06  波哥带你学Java    Tags:SpringSecurity   点击:(18)  评论:(0)  加入收藏
React 简介 React 基本使用<div id="test"></div><script type="text/javascript" src="../js/react.development.js"></script><script type="text/javascript" src="../js...【详细内容】
2021-11-30  清闲的帆船先生    Tags:框架   点击:(19)  评论:(0)  加入收藏
流水线(Pipeline)是把一个重复的过程分解为若干个子过程,使每个子过程与其他子过程并行进行的技术。本文主要介绍了诞生于云原生时代的流水线框架 Argo。 什么是流水线?在计算机...【详细内容】
2021-11-30  叼着猫的鱼    Tags:框架   点击:(21)  评论:(0)  加入收藏
TKinterThinter 是标准的python包,你可以在linx,macos,windows上使用它,你不需要安装它,因为它是python自带的扩展包。 它采用TCL的控制接口,你可以非常方便地写出图形界面,如...【详细内容】
2021-11-30    梦回故里归来  Tags:框架   点击:(26)  评论:(0)  加入收藏
前言项目中的配置文件会有密码的存在,例如数据库的密码、邮箱的密码、FTP的密码等。配置的密码以明文的方式暴露,并不是一种安全的方式,特别是大型项目的生产环境中,因为配置文...【详细内容】
2021-11-17  充满元气的java爱好者  博客园  Tags:SpringBoot   点击:(25)  评论:(0)  加入收藏
一、搭建环境1、创建数据库表和表结构create table account(id INT identity(1,1) primary key,name varchar(20),[money] DECIMAL2、创建maven的工程SSM,在pom.xml文件引入...【详细内容】
2021-11-11  AT小白在线中  搜狐号  Tags:开发框架   点击:(29)  评论:(0)  加入收藏
SpringBoot开发的物联网通信平台系统项目功能模块 功能 说明 MQTT 1.SSL支持 2.集群化部署时暂不支持retain&will类型消 UDP ...【详细内容】
2021-11-05  小程序建站    Tags:SpringBoot   点击:(55)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条