首页 > 其他分享 >@DS注解方式springboot多数据源配置及失效场景解决

@DS注解方式springboot多数据源配置及失效场景解决

时间:2024-11-04 15:57:15浏览次数:3  
标签:20 springboot 数据源 master slave com DS

1.使用教程

导入依赖

<!--多数据源-->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
			<version>3.5.0</version>
		</dependency>
123456

配置数据源

  datasource:
    dynamic:
    # 主数据源位master
      primary: master
      strict: false
      datasource:
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://172.16.5.10:3306/master?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: master
          password: master
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            initial-size: 20
            min-idle: 20
            max-active: 100
            max-wait: 60000
            pool-prepared-statements: false
            max-pool-prepared-statement-per-connection-size: 20
            timeBetweenEvictionRunsMillis: 60000
            validationQuery: SELECT 1 FROM dual
            filter: stat,wall,log4j
        slave:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://172.16.5.69:3306/slave?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
          username: slave
          password: slave
          type: com.alibaba.druid.pool.DruidDataSource
          druid:
            initial-size: 20
            min-idle: 20
            max-active: 100
            max-wait: 60000
            pool-prepared-statements: false
            max-pool-prepared-statement-per-connection-size: 20
            timeBetweenEvictionRunsMillis: 60000
            validationQuery: SELECT 1 FROM dual
            filter: stat,wall,log4j

#mybatis-plus
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: true
  mapper-locations: classpath*:/mapper/**/*mapper.xml
  type-aliases-package: com.byyl.datacenter.entity
  global-config:
    db-config:
      logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)
      logic-delete-value: 1 # 逻辑已删除值(默认为 1)
      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051

使用方式

再service具体实现类或者方法上添加 @DS("slave“) 即可切换数据源【slave为配置文件里配置的数据源名称】
在这里插入图片描述

失效场景解决方案

使用动态数据源(@DS)时,@Transactional使用可能会照成@DS失效。

解决方案:

  • 1.去掉事务(不建议)
  • 2.@DS切换数据源的方法添加事务传播属性@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
  • 3.去掉@DS切换数据源方法的事务,主方法用@DSTransactional注解。

@DS注解加到mapper接口、service接口、service方法里都不生效

解决方案:

  • 添加到service实现类或者实现类里具体的方法上。

在同一个实现类中,一个非DS注解的常规方法里调用@DS注解的方法可能失效

解决方案:

  • 将该DS注解方法定义在不同的类中,通过bean注入的方式调用

标签:20,springboot,数据源,master,slave,com,DS
From: https://www.cnblogs.com/javaxubo/p/18525475

相关文章

  • SpringBoot社区场地管理系统54217 本系统(程序+源码+数据库+调试部署+开发环境)带论文文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:用户,场地信息,场地事务,场地预约,社区活动,活动记录开题报告内容一、选题背景与意义随着城市化进程的加快,社区场地资源的管理显得愈发重要。传统的场......
  • SpringBoot社区常驻居民信息管理软件c3w65 程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统内容:社区主任,操作员,社区信息,楼房信息,公告信息开题报告内容一、项目背景与意义随着城市化进程的加快,社区作为城市的基本单元,其管理效率与质量直接影响......
  • 作业管理:SpringBoot框架技术突破
    摘要使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的作业管理系统有管理员,教师,学生三个角色。教师和学生......
  • SpringBoot框架:作业管理系统构建之道
    摘要使用旧方法对作业管理信息进行系统化管理已经不再让人们信赖了,把现在的网络信息技术运用在作业管理信息的管理上面可以解决许多信息管理上面的难题,比如处理数据时间很长,数据存在错误不能及时纠正等问题。这次开发的作业管理系统有管理员,教师,学生三个角色。教师和学生......
  • SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext
    SpringBoot源码系列文章SpringBoot源码解析(一):启动流程之SpringApplication构造方法SpringBoot源码解析(二):启动流程之引导上下文DefaultBootstrapContext目录前言一、入口二、DefaultBootstrapContext1、BootstrapRegistry接口2、BootstrapContext接口3、DefaultBo......
  • Cisco MDS光纤存储交换机配置zone
    通过Console口进行本地登录:输入用户名admin,密码:admin(交换机登录用户名密码要记住)1、配置交换机IP地址conft     配置模式intmgmt0(进入管理口配置)ipaddress10..113.43255.255.255.0 ip地址ipdefault-gateway10.21.113.1网关end      退出copy......
  • 基于springboot的CRM客户关系管理系统-计算机毕业设计源码316631
    摘要本论文主要论述了如何使用Java语言开发一个CRM客户关系管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,Springboot框架进行开发。在引言中,作者将论述CRM客户关系管理系统的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进行各......
  • SpringBoot新闻稿件管理系统:架构与实现
    3系统分析3.1可行性分析通过对本新闻稿件管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。3.1.1技术可行性本新闻稿件管理系统采用SSM框架,JAVA作为开发语言,是基于WEB平台的B/S......
  • 新闻稿件管理:SpringBoot框架高效开发
    2相关技术2.1MYSQL数据库MySQL是一个真正的多用户、多线程SQL数据库服务器。是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适用于Web站点或者其他......
  • java springboot对接微信小程序和微信支付v3接口
    1、controller代码packagecom.saburo.server.controller.weixin;importcn.dev33.satoken.annotation.SaIgnore;importcom.gcode.common.core.R;importcom.saburo.server.common.dto.WeiXinUserInfoDto;importcom.saburo.server.common.dto.money.PayDto;importcom.......