springboot 整合mybatis plus,使用druid 切换多数据源实现单数据库事务,附赠项目源码地址

项目源码地址

GitHub - liyanlei58/ssm: springboot druid mybatis plus 事务

最近想搭一套spring cloud开发环境,各种不顺利吧,先是spring cloud的组件某些功能不好用,是版本自身的bug。后来又碰到了事务无法回滚这个搞了好几个周,我差点想要放弃,不得不说我有时候确实很执着,今天总算弄清楚了。一开始不知道是哪里错,后来网上找了一个好用的事务程序,但是切到我的项目上还是不好用,之后怀疑是springboot版本问题,怀疑都仅仅是怀疑。

因为mysql jar包,5.XXX的版本与8.XXX的版本的驱动不是一样的,所以把问题锁定到mysql驱动上了,这个是正解吧。网上找到了下面这篇文章,如文章所言我恰巧用的mysql-connector-java:8.0.28版本的jar包,但是按照他的操作我的问题并没有解决。建议自查!MySQL驱动Bug引发的事务不回滚问题,也许你正面临该风险! - 知乎

 后来又找到了事务中动态切换数据源的问题 - 简书 文章,进一步了解数据源是怎么切换的,执行数据库操作的时候(增、删、改、查数据库表或者@Transactional注解开启事务的时候),mybatis会去创建链接,创建链接会选择数据源,在这个时候进行的数据源切换。

于是把这两个注解放到一起

切换数据源是AOP实现的,@Transactional注解也是AOP实现的,又出现一个切换执行顺序的问题,spring切面执行顺序-事务切面注意点 - 简书 看了这篇文章,在自定义注解的AOP切面上加上@Order(-1),问题终于算是解决了。事务可以正常,数据源也可以正常切换了。

附@Primary注解说明  

其作用与功能,当有多个相同类型的bean时,使用@Primary来赋予bean更高的优先级。

Spring中@Primary注解_盲目的拾荒者的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/7380.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows的环回网卡(loopback adapter) 安装方法

0.说明:windows的环回网卡(loopback adapter)的作用: microsoft loopback adapter就是安装在本机上的一块虚拟网卡,它跟本机上的其它物理网卡、和物理网卡连接的网络是没有关系的,你可以理解成这块网卡上的网线接到了另外一个空白…

Python 字节数组方式写入kafka(含报错return ‘<SimpleProducer batch=%s>‘ % self.async)

一、背景 项目开发了一个类似kafka tools查询工具的kafka 查询,现在需要测试一下如果通过字节数组的形式写入,看看查询有没有问题 二、kafka查询代码 Python代码示例: from kafka import KafkaProducer import json# 创建Kafka生产者 pro…

美好未来“一束光”儿童安全教育项目在四川泸定正式启动

6月26日,由中华少年儿童慈善救助基金会和北京臻爱公益基金会共同发起的美好未来计划“一束光”儿童安全教育公益项目启动仪式,在四川省甘孜藏族自治州泸定县贡嘎山片区寄宿制学校举行。 出席本次启动仪式活动的嘉宾有:中华少年儿童慈善救助基…

【Spring Boot 事务】万字详解Spring Boot 事务,赶快跟随良辰一起去学习Spring Boot 事务吧! ! !

前言: 大家好,我是良辰丫,这篇文章我将带领大家一起去学习Spring Boot 事务文章,我们在学习数据库的时候已经接触过事务了,来跟随我的脚步一起来瞧一下Spring Boot 事务吧.💌💌💌 🧑个人主页:良辰针不戳 📖…

element框架select值更新页面不回显的问题,动态表单props绑定问题

1、页面中使用form表单&#xff0c;引入select组件 当data中默认没有定义form.region的值时&#xff0c;会出现选择select后input没有回显选择数据值&#xff1b;所以使用select时&#xff0c;必须定义默认值 <el-form ref"form" :model"form" label-…

聊一聊人工智能与视频技术的5大发展趋势与应用

随着互联网的快速发展&#xff0c;视频时代已经到来。据统计&#xff0c;目前互联网内容中&#xff0c;视频内容占据高达82%的流量&#xff0c;未来仍将持续增长。今天我们就来聊一聊关于视频技术的发展&#xff0c;以及现在的大热门–人工智能技术与视频技术的结合。 视频技术…

第38节:cesium 风场效果(含源码+视频)

结果示例: 完整源码: <template><div class="viewer"><vc-viewer @ready="ready" :logo="false"><!

CUDA中的缓存

CUDA缓存包括L1缓存和L2缓存。 SM加载数据&#xff0c;根据不同的设备和类型分为三种路径&#xff1a; 一级和二级缓存常量缓存只读缓存 常规的路径是一级和二级缓存&#xff0c;需要使用常量和只读缓存的需要在代码中显式声明。但是提高性能&#xff0c;主要还是要取决于访问…

茶油生产加工MES质量溯源平台源码(spring boot+mybatis+easyui+mysql+h5)

一、生产加工MES&#xff08;Manufacturing Execution System&#xff0c;简称MES&#xff09;是一种面向车间的生产过程管理与实时信息系统。它主要负责监控生产过程&#xff0c;管理生产资源&#xff0c;优化生产流程&#xff0c;提高生产效率和质量。MES系统需要与ERP系统、…

Android TV:自定义Leanback的VideoDetailsFragment

在Android studio新建TV项目的demo上做修改,实现一下需求: 1、去掉顶部背景区域 2、修改中间详情区域高度 3、修改整体背景界面 效果如图: 搜遍全网,没有找到一个解决方案。只能考自己看代码来自定义实现了。 1、去掉顶部背景区域: VideoDetailsFragment中重写setupD…

【Java项目】拉取公司GitLab项目的教程

文章目录 创建Git账号登录Git 创建Git账号 进入公司后&#xff0c;会拿到公司给你注册的邮箱以及密码&#xff0c;你得到用户名和密码之后&#xff0c;需要先创建一个拉取这个仓库对应的git账号。 我们先登录GitLab 当你登录GitLab之后&#xff0c;会显示你还没有ssh key&…

UE4/5数字人Metahuman与Style3D的使用【二、布料模拟】

目录 鼠标点击布料模拟&#xff1a; 让布料模拟可以跟着动画序列&#xff1a; 有穿模情况&#xff1a; 多件衣服替换&#xff1a; 关卡序列中使用缓存&#xff1a; 效果&#xff1a; UE4/5数字人Metahuman与Style3D的使用【一、Style3DAtelier软件制作smd格式衣服并导入ue】…