Java注解@Transa1ctional失效特殊情况

最近接手了一个项目需要在上面新加一个模块,我这边直接把之前的模块复制一份改改,去掉多余的文件就开始写了,但是就在一小时前,我调试接口的时候突然就发现事务回滚失效了,准确的说是事务都没有正常开启,这他么的咋回事?

因为刚接手这个项目才一周,它的架构也不是很熟,然后这个模块又很急需要一周做完,所以只能先常规问题检一遍,但是发现都不行
直到刚刚我加了下面这个文件,这个是显示的配置数据源的,正常情况不需要配置

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;import javax.sql.DataSource;@Configuration
@EnableTransactionManagement
public class TransactionManagerConfig {@Beanpublic PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Beanpublic TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) {return new TransactionTemplate(transactionManager);}
}

然后报了个错

[2024-06-14 19:50:01.038]  [ERROR  c.y.c.j.c.ExceptionController.globalException:86] ~~~~~~exception=No qualifying bean of type 'org.springframework.transaction.TransactionManager' available: expected single matching bean but found 2: transactionManager,rabbitTransactionManager
org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.transaction.TransactionManager' available: expected single matching bean but found 2: transactionManager,rabbitTransactionManager

重点在 expected single matching bean but found 2: transactionManager,rabbitTransactionManager
发现了两个数据源,其中有一个是rabbitTransactionManager
这样问题就好解决,既然是双数据导致的,那就指定一下数据源

这里给它加个注解@Primary

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.support.TransactionTemplate;import javax.sql.DataSource;@Configuration
@EnableTransactionManagement
public class TransactionManagerConfig {@Bean@Primarypublic PlatformTransactionManager transactionManager(DataSource dataSource) {return new DataSourceTransactionManager(dataSource);}@Beanpublic TransactionTemplate transactionTemplate(PlatformTransactionManager transactionManager) {return new TransactionTemplate(transactionManager);}
}

到这里这个问题就解决

当然我还是很生气的,今天周五!现在八点了我还没下班!所以我又去之前复制的那个模块试了一下别人写的代码,我想知道我复制后是不是删了什么配置文件或者哪里没配置好才出现的这个问题,然后!他么的原模块事务就已经没有生效!!!法克!之前同事还跟我说这个项目二十多个人开发了两年,两年事务没生效没一个人发现?难怪原先做这个项目的公司倒闭了!活该啊!!!

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

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

相关文章

Linux vim 文本编辑 操作文本 三种模式

介绍 vi 是一个经典的行编辑器,支持模式编辑(包括普通模式、插入模式和命令模式)。 vim 保留vi核心功能的基础上,增加了多级撤销、语法高亮、插件支持等高级功能。 两者的最大区别,简单的来说vim就是vi的增强版 三…

Kafka生产者消息发送流程原理及源码分析

Kafka是一个分布式流处理平台,它能够以极高的吞吐量处理数据。在Kafka中,生产者负责将消息发送到Kafka集群,而消费者则负责从Kafka集群中读取消息。本文将探讨Kafka生产者消息发送流程的细节,包括消息的序列化、分区分配、记录提交等关键步骤。 先看一个生产者发送消息的代…

LaDM3IL:多实例学习用于免疫库分类

一个人的免疫组库由某一时间点的大量适应性免疫受体组成,代表了该个体的适应性免疫状态。免疫组库分类和相关受体识别有可能为新型疫苗的开发做出贡献。大量的实例对免疫组库分类提出了挑战,这可以表述为大规模多实例学习 (MMIL,Massive Mult…

pdf.js实现web h5预览pdf文件(兼容低版本浏览器)

注意 使用的是pdf.js 版本为 v2.16.105。因为新版本 兼容性不太好,部分手机预览不了,所以采用v2版本。 相关依赖 "canvas": "^2.11.2", "pdfjs-dist": "^2.16.105", "core-js-pure": "^3.37.…

苹果新型基于home app的骚扰

近期很多用户收到了新型骚扰信息,通过「家庭」邀请。 故障回显: 你会有到一条邀请你加入 Apple 智能家庭的邀请信息,但邀请信息的内容是骚扰信息,且骚扰信息中通常携带链接,千万不要随意打开。 这种骚扰方式暂时没有…

通信协议—Modbus

1、modbus简介 Modbus服务器:接收处理来自客户端的请求,并返回相应的响应; Modbus客户端:向Modbus服务器发送请求,并接收服务器返回的响应的设备或程序; 2、modbus poll调试工具下载 modbus poll用于测…

Python基础教程(二十):SMTP发送邮件

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

【C语言】assert.h——断言

文章目录 主要内容调试和发布模式使用示例用法总结与注意事项 断言是一种用于在程序执行过程中进行调试的工具,能够帮助开发者验证程序的某些假设是否为真。如果断言失败,程序会终止,并输出一个错误消息,通常包含出错的文件名和行…

13【MySQL必知必会】分组数据(GROUP BY,HAVING)

SQL语句 /*第13章 分组数据关键词:分组数据,GROUP BY,HAVING*/-- 计算供应商ID为1003的产品数量 SELECT COUNT(*) AS num_prods FROM products WHERE vend_id 1003;-- 按供应商ID分组,统计每个供应商的产品数量 SELECT vend_id,…

Linux网络工具:跟踪 TCP 连接的命令tcptrack命令详解

目录 一、概述 二、 用法 1、基本用法 2、选项 三、安装 1、说明 2、Debian 系统中安装 3、centos中安装 (1)下载源代码 (2)编译源代码 (3)安装 四、示例和输出 1. 显示所有 TCP 连接 2. 只跟…

微信监控销售防飞单系统,让你的团队业绩稳如泰山!

团队中偶尔出现的私单、飞单问题而烦恼不已?你是否渴望拥有一个神器,能够实时监控销售过程,确保团队业绩的稳健增长?今天,就让我们一起探索这款神奇的“微信监控销售防飞单系统”,让你的销售团队如虎添翼&a…

React 渲染流程分析

React 页面是由组件组成的,从根组件直到叶组件,内部的组件数通过 Fiber 来保存并触发并发更新。页面的展示分为两部分,首先是初始化,所有组件首次展示,都要进行渲染,之后是更新流程,也就是页面产…

【利用python制作一个小程序生成爱心】

要利用Python制作一个小程序来生成爱心,我们可以使用字符图形或者利用图形库(如turtle)来绘制。下面我将分别展示这两种方法。 方法一:字符图形爱心 这种方法使用ASCII字符来模拟爱心的形状。 def print_love():heart [ ♥ …

实况:老菜鸟自力更生从零开始重学spring目标是画出一张唬人大图(二、源码下载编译)

前情提要:调试前的基础知识梳理 速览 “Spring”包含哪些东西源码下载源码编译1、编译工具选择:gradle2、使用gradle编译spring并导入idea预编译spring-oxm导入IDEA确认合适的jdk版本排除spring-aspects模块 开始调试 “Spring”包含哪些东西 可以明确的…

代码随想录算法训练营第二十四天| (回溯) 77. 组合、 216.组合总和III、17.电话号码的字母组合

77. 组合 题目链接:77. 组合 文档讲解:代码随想录 状态:很多细节忘了 思路:先画图,然后可以发现,从1到n中选择k个数,可以看成是一个递归过程,这个递归的深度就是k。然后遍历当前这层…

四舍五入 和 交换变量值 题目

题目 JAVA3 四舍五入分析:代码: JAVA4 交换变量值分析:代码:大佬代码: JAVA3 四舍五入 描述 定义一个int类型变量i,i为由浮点数变量d四舍五入后的整数类型,请将转换后的i进行输出。 输入描述:…

Centos7安装jdk8或11以及切换方案

目录 jdk安装 安装OpenJDK11 安装OpenJDK8 配置默认的 Java 版本 验证 全局环境变量(选配) 个人版(自己可以用,公司不建议) 公司版本 /etc/profile 和 ~/.bash_profile 区别 前言-与正文无关 生活远不止眼前的苦…

【动态规划】| 路径问题之不同路径 力扣62

🎗️ 主页:小夜时雨 🎗️ 专栏:动态规划 🎗️ 如何活着,是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/unique-paths/description/ 通常动态规划的题目有…

建筑电工精选最新模拟试题(含答案)

一、填空题 1、我国安全生产的基本方针是 安全 第一,预防 为主,综合治理。 2、特种作业人员,必须积极主动参加培训与考核 。既是法律法规的规定,也是自身工作,生产及生命安全 的需要 3、触电急救&#x…

如何在React组件中实现父子组件之间的通信?

在React中,父子组件之间的通信通常通过props(属性)和回调函数来实现。以下是具体的实现方式: 父组件向子组件传递数据(通过props) 在父组件中,你可以通过向子组件传递props来发送数据。子组件…