SpringBoot集成多数据源

一、多数据源集成简介【SpringBoot集成多数据源】多数据源集成使用
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: 1minIdle: 3maxActive: 100# 配置获取连接等待超时的时间maxWait: 6000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 1000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 30000validationQuery: select 'x' FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: false# 打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4j# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: true #设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.datasource:master:url: jdbc:MySQL://localhost:3306/dbname1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8username: XXXXpassword: XXXXdriver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource# strict为false时候,可以不配置从数据源slave_1:url: jdbc:mysql://localhost:3306/dbname2?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8username: xxxxpassword: xxxxdriver-class-name: com.mysql.jdbc.Drivertype: 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 {@Autowiredprivate UserServiceImpl userService;@GetMapping("/list")public ResponseResult<List<SAuUser>> list() {final List<SAuUser> list = userService.selectAll();returnResponseResult.renderSuccess(list, "获取用户信息成功");}}//建议在service层类上或者方法添加@DS("dsName"),可以用来指定数据库连接那个数据库@Service@DS("slave_1")// slave_1 多数据源从库名称 ,如果不使用@DB注解,默认连接主库class UserServiceImpl {@Autowiredprivate ISAuUserService userService;public List<SAuUser> selectAll() {final List<SAuUser> list = userService.list();return list;}}



    推荐阅读