Seata导致本地事务@Transactional失效解决方案

2023-10-31

原理:

把spirng本地事务数据源设置为seata代理数据源

核心代码

在seata配置类中加入

    @Bean("txManager")
    public DataSourceTransactionManager txManager(DataSourceProxy dataSourceProxy) {
        return new DataSourceTransactionManager(dataSourceProxy);
    }

seata配置类(全)

import com.alibaba.druid.pool.DruidDataSource;
import io.seata.rm.datasource.DataSourceProxy;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.transaction.SpringManagedTransactionFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**
 * 功能描述: seata需要注入的数据源配置
 *
 * @author luxiaomeng
 * @date 2020/10/12   20:37
 * 修改日志: 暂无
 */
@Configuration
public class DataSourceProxyConfig {

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return new DruidDataSource();
    }



    @Bean
    public DataSourceProxy dataSourceProxy(DataSource dataSource) {
        return new DataSourceProxy(dataSource);
    }


    @Bean("txManager")
    public DataSourceTransactionManager txManager(DataSourceProxy dataSourceProxy) {
        return new DataSourceTransactionManager(dataSourceProxy);
    }


    @Bean
    public SqlSessionFactory sqlSessionFactoryBean(DataSourceProxy dataSourceProxy) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSourceProxy);
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath*:/mapper/*.xml"));
        sqlSessionFactoryBean.setTransactionFactory(new SpringManagedTransactionFactory());
        return sqlSessionFactoryBean.getObject();
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Seata导致本地事务@Transactional失效解决方案 的相关文章

  • Spring Security 通过并发登录尝试将用户锁定

    我是安全新手 遇到了一个问题 该问题导致用户帐户被锁定 只有重新启动应用程序才能修复它 我有一个带有 spring security 4 0 2 RELEASE 应用程序的 spring boot 1 3 0 BUILD SNAPSHOT
  • 无法访问类型的封闭实例。 [复制]

    这个问题在这里已经有答案了 整个代码是 public class ThreadLocalTest ThreadLocal
  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 实现与扩展:何时使用?有什么不同?

    请用易于理解的语言进行解释或提供某些文章的链接 extends is for 延伸一类 implements is for 实施一个接口 接口和常规类之间的区别在于 在接口中您不能实现任何声明的方法 只有 实现 接口的类才能实现方法 C 中
  • 使用 Android WebViewClient 启用特定 SSL 协议

    我的应用程序使用WebViewClient与服务器建立 SSL 连接 服务器配置为仅接受 TLSv1 1 及以上协议 使用 Android 时 如何检查哪些 SSL 协议是 a 支持的和 b 默认启用的WebViewClient在设备上 如
  • 使用 Spring Data REST 处理自定义异常 (i18n)

    我正在使用 Spring Boot 1 5 4 和 Spring JPA Spring Data REST HATEOAS 我正在寻找一种最佳实践 Spring 方式 来自定义异常 Spring Data REST 正在管理添加 i18n
  • 无法实例化接收器 com.parse.GcmBroadcastReceiver

    我正在编写一个使用 GCM 通知和解析推送的离子应用程序 这个应用程序正在使用这些插件 com ionic keyboard 1 0 3 Keyboard com phonegap plugins PushPlugin 2 4 0 Push
  • 要打乱的键值(整数、字符串)列表的最佳结构

    我需要在 Java 中实现一个结构 它是一个键值列表 类型为整数 字符串 并且我想对其进行洗牌 基本上 我想做类似的事情 public LinkedHashMap
  • 哈希码是否用于加速集合中的对象查找?

    IIUC 相同类型的两个不同对象可以存储在 HashSet 中 即使两个对象在以下情况下返回相同的值 hashCode 叫做 例如根据本文 https eclipsesource com blogs 2012 09 04 the 3 thi
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s
  • 如何在 Struts 2 OGNL 中将参数传递给方法调用

    我想使用属性作为对象方法的参数
  • 用 java 编写解释器时的 switch 或 if 语句

    当前的作业需要我编写一个程序 以一种非常微小且基本的编程语言 行为有点像 FORTRAN 来读取包含指令的文件并执行这些指令 基本上它是我猜的语言的简单解释器 它是完全线性的 所有语句都是按顺序定义的 并且只有字符串和整数变量 我需要查找和
  • Java 唤醒休眠线程

    我阅读了其他帖子 但没有找到我正在寻找的确切答案 所以我希望有人能给出一些澄清 我有一个将运行一段时间的程序 我有一些在后台运行的线程来执行各种任务 为了简单起见 让我们考虑 3 个线程 ThreadA每 10 秒执行一次任务 其中Thre
  • 以编程方式设置 Logback Appender 路径

    我正在尝试以编程方式设置 Logback 附加程序路径 滚动文件附加器 http logback qos ch apidocs ch qos logback core rolling RollingFileAppender html准确地说
  • 使用Java开发跨平台,不同平台字体缩放不同

    我正在为我的大学制作一些软件 需要一个 GUI 在它的第一个版本中 我让它使用系统外观 因此它看起来像 Linux Mac Windows 中的本机应用程序 我发现这很麻烦 因为我必须根据操作系统使所有 JLabel 具有不同的大小 无论分
  • 如何使用云打印打印Android活动显示

    我正在尝试将 Google 云打印实现到应用程序中 遵循集成指南 https developers google com cloud print docs android 我试图通过打印 google com 来保持基本 单击我创建的打印按
  • 我们可以使用 for-each 循环来迭代 Iterator 类型的对象吗? [复制]

    这个问题在这里已经有答案了 如果我们执行以下操作 我们会收到错误 class FGH public static Iterator reverse List list Collections reverse list return list
  • 战争库中的罐子爆炸

    我们可以将分解的 jar 文件放入 war web inf 库中吗 它在 JBOSS 4 2 中对我不起作用 我收到以下错误并且无法部署应用程序 Caused by javax management RuntimeOperationsExc
  • 如何从spark中的hbase表中获取所有数据

    我在 hbase 中有一个大表 名称为 UserAction 它具有三个列族 歌曲 专辑 歌手 我需要从 歌曲 列族中获取所有数据作为 JavaRDD 对象 我尝试了这段代码 但效率不高 有更好的解决方案来做到这一点吗 static Spa
  • Libgdx 和 Google 应用内购买结果

    我遵循了这些指示 https github com libgdx libgdx wiki Interfacing with platform specific code使用 ActionResolver 接口集成 Libgdx 和原生 An

随机推荐

  • 跟着英雄刷算法-计数法

    博主是一个刚刚学校C语言和算法的小白 算法这一块完全是空白 偶然了解到了英雄大佬和万人社区 以后博主有时间会分享跟着英雄大佬学习到的东西和平时练习 引例 1 IQ测试 iq表示统计智商的数据列表 然后统计智商大于k的人数 int func
  • 使用selenium+chrome 爬取数据时出现的版本不兼容导致网页打不开或者无法运行

    代码如下 from selenium import webdriver import time chromeOptions webdriver ChromeOptions browser webdriver Chrome options c
  • python skimage图像处理

    基于python脚本语言开发的数字图片处理包 比如PIL Pillow opencv scikit image等 PIL和Pillow只提供最基础的数字图像处理 功能有限 opencv实际上是一个c 库 只是提供了python接口 更新速度
  • 用Delphi开发微信支付和支付宝支付生成签名并提交刷卡支付请求验证源码

    注意 以下来自Delphi盒子用户 wangpingdejiejie linuxping 感谢wangpingdejiejie linuxping 对全球Delphi社区做出的贡献 不管是微信支付还是支付宝支付 3个最棘手的问题是 1 如何
  • Java算法基础----数据结构基本概念

    数据和数据元素概念 数据 是人们利用文字 数字符号以及其他规定的符号对现实世界及其活动所做的抽象描述 表示一个事物的一组数据称为一个数据元素 构成数据元素的数据称为该数据元素的数据项 数据的逻辑结构 数据元素之间的相互联系方式称为数据逻辑结
  • Installation failed with message INSTALL_FAILED_USER_RESTRICTED错误

    星期一在as上运行代码 真机测试app时候就出现了INSTALL FAILED USER RESTRICTED的安装错误 上周就能连接手机运行测试的啊 然后重新建立个项目 还是如此 详细报错为 It is possible that thi
  • 显著区域和非显著区域特征提取Matlab实现

    显著区域和非显著区域特征提取Matlab实现 在图像处理和计算机视觉中 显著区域和非显著区域的提取是一项非常重要的任务 它可以帮助我们更好地理解图像并提供更有效的信息 在本文中 我们将介绍如何使用Matlab实现显著区域和非显著区域的提取
  • SQL Server 数据库增删改查语句

    在使用SQL Server的时候 需要在新建查询中简单的处理数据库 下面介绍一下SQL基础的增删改查语句 介绍下面用到的变量 Table 数据库表名 Column 字段 Content 内容 1 SQL查询语句 查询全表 select fr
  • 【Adobe】Premiere怎么把视频旋转

    文章目录 1 打开Premiere 新建项目 将视频导入媒体 将视频拖入时间轴中 点击轨道上的视频条 2 依次点击 效果 效果控件 运动 旋转 输入需要旋转的角度数 3 点击上方菜单栏中的 序列 序列设置 选项 4 将 帧大小 和 水平 中
  • 【Nacos源码系列】Nacos心跳机制原理

    文章目录 心跳机制是什么 Nacos心跳机制 客户端心跳 服务端接收心跳 总结 前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 心跳机制是什么 心跳机制是一种用于监测和管理微服务可用性的机制
  • React 与 TS 结合使用时组件传参总结

    在学习 React 时 我们总会遇到在 TS 和 JS 之间切换来开发多个项目 而有时会忘记 TS 的语法 所以编写一下 React 结合 TS 开发时的一些总结知识点 以便后续回顾用 向组件传递基础参数 字符串 数字和布尔值 这节主要是介
  • element-ui深入浅出 v-loading指令

    想必用过 element ui 来开发中后台项目的同学都知道 其内置的 v loading 指令是非常友好 只需要提供一个 Boolean 值就能实现加载动画的一个指令 如果使用过 element ui 但没有使用过 v loading 指
  • Office Tool Plus软件运行错误,缺少.net

    2021 9 29更新 看了Office Tool Plus官方文档之后 发现有了一个新版本 with runtime 版本 这个版本已经包含了 net组件 不用另外安装 net了 如果遇到Office Tool Plus软件运行错误 缺少
  • Retrofit Interceptor网络拦截器

    1 Interceptor interface Interceptor Throws IOException class fun intercept chain Chain Response interface Chain fun requ
  • python压缩数据长度_Python错误:解压缩需要一个长度为4的字符串参数,但这是吗?...

    我正在使用python 2 7 我不明白为什么这行不通 有人可以给我提示 gt gt gt from struct import unpack gt gt gt T2 u xb6 u x01 u x59 u x59 gt gt gt T2
  • Anaconda Scrapy 安装

    anaconda安装 anaconda官网下载下载地址https www anaconda com distribution 安装anaconda没有什么注意事项 只要更改一下安装目录即可 其他的都可以默认下一步 安装成功后 配置一下环境变
  • 在UNIX \ Linux终端中的可视化磁盘空间和磁盘使用情况小工具 - Vizex

    在UNIX Linux终端中的可视化磁盘空间和磁盘使用情况小工具 Vizex 背景 什么是Vizex Linux终端上安装方法 如何使用Vizex 1 vezix 2 vizexdf 3 可以通过 help 使用command调用optio
  • 第一章 命题逻辑 1.4 析取范式与合取范式

    1 4 析取范式与合取范式 这一小节内容较多 我们由浅入深的来 首先要明白简单析取式和简单合取式的定义 定义 我们将命题变项及其否定统称作 文 字 red 文字 文字 简
  • c语言中stat函数,C语言:stat,fstat和lstat函数

    这三个函数的功能是一致的 都用于获取文件相关信息 但应用于不同的文件对象 对于函数中给出pathname参数 stat函数返回与此命名文件有关的信息结构 fstat函数获取已在描述符fields上打开文件的有关信息 lstat函数类似于st
  • Seata导致本地事务@Transactional失效解决方案

    原理 把spirng本地事务数据源设置为seata代理数据源 核心代码 在seata配置类中加入 Bean txManager public DataSourceTransactionManager txManager DataSource