springboot集成多数据源

springboot集成多数据源-凯发平台

游戏|数码彩彩2024-11-18 8:03:332091

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

  • 1、pom.xm文件引入dynamic-datasource-spring-boot-starter maven依赖。maven依赖配置如下
 
        
        
            com.baomidou
            dynamic-datasource-spring-boot-starter
            3.2.0
        
  • 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+8
            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+8
            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() {
        final list 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 selectall() {
        final list list = userservice.list();
        return list;
    }
}
点击这里复制本文地址 凯发平台的版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

凯发平台-凯发k8旗舰厅 © all rights reserved.  网赚杂谈

网站地图