springboot项目中配置多数据源@transactional注解失效问题

author author     2023-03-28     289

关键词:

参考技术A

当一个Spring Boot 项目在配置了多个数据源 , 在编写 Service层方法 的时候 , 直接在service方法的上添加的 @Transactional 直接实现事务管理的方式是失效的 .

以最近接触到的一个持久层框架使用的是Jpa的项目为例 , 该项目通过硬编码(配置类)的方式 , 在项目中配置了两个不同的数据源 , 所以这个项目分别根据两个数据源配置了各自的事务管理器 PlatformTransactionManager , 如下 :

第一个数据源的事务管理器配置类 :

第二个数据源事务管理器配置类 :

可以看到第二个事务管理器的Bean方法上添加了 @Primary 注解 , 所以在通过 PlatformTransactionManager 类型注入事务管理器的bean时 , 默认是根据类型去注入 , 如果该类型有多个 Bean , 如不通过bean的名字去注入 , 则默认是会注入被 @Primary 标识的bean的 ;

所以在这个项目中 , 当在业务层方法添加 @Transactional 注解时 , 默认是调用了 transactionManagerTwo 这个bean , 而我在编写service层的方法时 , 调用的是第一个数据源对应的Dao层方法 , 所以直接添加 @Transactional 是不能实现事务管理的 ,

需要在使用 @Transactional 注解时指定使用的事务管理器的bean的名字 , 比如我这里调用的是第一个数据源的dao层方法 , 所以需要指定对应的事务管理器 : @Transactional(transactionManager = "transactionManagerOne") .

springboot2.x下多数据源配置

...多数情况下可以参考这个教程进行配置。不过该教程适合springboot1.x版本,由于2.x版本修改默认连接池为Hikari,所以该教程中的配置需要进行一些修改才可适用于2.x。主要不同之处在于DataSource的初始化。所以可在每个数据源的conf... 查看详情

springboot+mybatis配置多数据源,分包方式

看了不少网上关于多数据源的配置,大致可分为两类,分包方式和通过切面方式;样例已上传至github:https://github.com/dadachao/multids第一个子项目ds01即时使用分包方式完成多数据源配置。总结项目中出现的问题和解决办法:数据库... 查看详情

springboot整合多数据源以及多数据源中的事务处理

...处理注意:设置日志文件目录前言本文主要介绍的是springboot整合多数据源以及多数据源事务处理。多数据源就是在同一个项目中连接多个数据库,使用多个数据库可能是由于业务量扩大进行数据库拆分,也可能是根... 查看详情

springboot2配置多数据源,整合mybatisplus增强插件

本文源码:GitHub·点这里||GitEE·点这里一、项目案例简介1、多数据简介实际的项目中,经常会用到不同的数据库以满足项目的实际需求。随着业务的并发量的不断增加,一个项目使用多个数据库:主从复制、读写分离、分布式数... 查看详情

springbootmybatis多数据源配置

在springboot项目中配置多个数据源的情形在开发中经常会遇见,本文以SpringBoot+MyBatis的方式实现mysql+Postgresql双数据源项目搭建,具体详细代码请参考:https://gitee.com/senn-wen/my...一、依赖配置在pom.xml文件中引入postgresql和mysql的驱动... 查看详情

springboot多数据源配置(多种数据库)

最近一段时间在使用springboot开发项目,其中有一个项目用到了多数据源的配置,网上的资料还是不太多,走了好多才找到一个合适的,把自己写的分享一下,做个笔记,以后也许有用,第一次写博客,不好勿喷!!首先介绍下... 查看详情

springboot项目优雅的实现多配置文件切换以及获取配置信息(代码片段)

SpringBoot项目优雅的实现多配置文件切换以及获取配置信息一、构建项目二、创建工具类进行解析yml获取对应的配置数据三、测试在我们平时的生产中肯定不会单纯的的只有一个配置文件,通产会分为测试、开发、生产三个版... 查看详情

springboot实现多数据源整合mybatis版(代码片段)

前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情

springboot实现多数据源整合mybatis版(代码片段)

前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情

springboot+mybatis+pagehelper配置多数据源

 前言:本文为springboot结合mybatis配置多数据源,在项目当中很多情况是使用主从数据源来读写分离,还有就是操作多库,本文介绍如何一个项目同时使用2个数据源。也希望大家带着思考去学习!博主是最近才学的配置写成博... 查看详情

springboot2.x:mybatis多数据源配置

前言MyBatis多数据源配置,最近在项目建设中,需要在原有系统上扩展一个新的业务模块,特意将数据库分库,以便减少复杂度。本文直接以简单的代码示例,如何对MyBatis多数据源配置。准备创建数据库db_testSETNAMESutf8mb4;SETFOREIGN_... 查看详情

springboot2.0之八多数据源配置

...构的情况下,就可以考虑使用多数据源来解决这个问题。SpringBoot为我们提供了相对简单的实现。一、建立如下结构的maven项目二、添加相关数据库配置信息server:port:8080spring:datasource:master:drive 查看详情

springboot+aop实现多数据源动态切换

      SpringBoot+aop实现多数据源动态切换 一、多数据源动态切换原理项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此;又例如:读写分离数据库配置的系统。1、多数据源设置... 查看详情

springboot(十二):mybatis-plus的多数据源和分页

...要连接的数据库:blog和user,默认为blog3、启动类配置在@SpringBootApplication注解上增加exclude=DruidDataSourceAutoConfigure.class配置:这个配置的作用是去掉对DruidDataSourceAutoConfigure的自动配置,否则程序会报错:原因:DruidDataSourceAutoConfigur... 查看详情

springboot实现多数据源整合mybatis版(代码片段)

前言本篇博客只讲如何从零到壹地再SpringBoot项目中实现多数据源配置,不谈源码(后续上SpringBoot自动配置等源码)。本篇博客内容基于SpringBootVersion2.5.1。背景一个项目中需要连接多个数据源,我们需要在业务层... 查看详情

springboot配置多数据源

参考技术A对应的mapper,resources下的mapper.xml都要分开放到不同的包下两个数据源的mapper写入对应的包下面即可,在项目里可以直接使用,就可以访问对应的数据源。 查看详情

springboot捕获全局异常和配置多数据源

目录配置多数据源写两个数据源的配置类。@(springboot捕获全局异常和配置多数据源)捕获全局异常是在项目运行期间如果调用的某一个方法出现了运行时异常,则会捕获,并且给出回馈。首先需要建一个包,包里新建一个捕获异... 查看详情

springboot项目优雅的实现多配置文件切换以及获取配置信息(代码片段)

SpringBoot项目优雅的实现多配置文件切换以及获取配置信息一、构建项目二、创建工具类进行解析yml获取对应的配置数据三、测试在我们平时的生产中肯定不会单纯的的只有一个配置文件,通产会分为测试、开发、生产三个版... 查看详情