当前位置:首页 > Java技术 > springboot 事务手动回滚

springboot 事务手动回滚

2022年09月16日 14:01:29Java技术4

亲测在使用@Transactional、@Transactional(rollbackFor = Exception.class)及catch异常之后 throw new RuntimeException();仍然不能解决线程中的事务回滚。下面使用线程所机制,进行整体的事务提交及事务回滚,代码如下:

在springboot启动类上加  @EnableTransactionManagement  注解

线程类中添加以下代码

@Autowired

private PlatformTransactionManager platformTransactionManager;

@Autowired

private TransactionDefinition transactionDefinition;

private Lock lock = new ReentrantLock();

// todo 业务处理方法 数据存储异常 手动进行回滚

public void saveMsg(String message) throws Exception {

lock.lock();

TransactionStatus transaction = platformTransactionManager.getTransaction(transactionDefinition);

try {

//todo 具体业务,对数据库的操作 start

test1Service.save(test1);

test2Service.save(test2);

//end

platformTransactionManager.commit(transaction);

} catch (Exception e) {

platformTransactionManager.rollback(transaction);

e.printStackTrace();

} finally {

lock.unlock();

}

}

注:如果无法用 @Autowired 程序启动进行对象创建,可以使用init静态注入,如果对象可以正常创建,下面代码可以忽略。

@Autowired

private static PlatformTransactionManager platformTransactionManager;

@Autowired

private static TransactionDefinition transactionDefinition;

@Autowired

public void init(PlatformTransactionManager platformTransactionManager,TransactionDefinition transactionDefinition

) {

DriverAlfaServerHandler.platformTransactionManager = platformTransactionManager;

DriverAlfaServerHandler.transactionDefinition = transactionDefinition;

}

此回滚方法亲测有效。

到此这篇关于springboot手动事务回滚的实现代码的文章就介绍到这了,更多相关springboot 事务回滚内容请搜索随便开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持随便开发网!

作者:小黑盒第一Dva
来源链接:https://blog.csdn.net/weixin_34857730/article/details/111976857

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/42050.html

分享给朋友:

“springboot 事务手动回滚” 的相关文章

SpringBoot事务简单操作及手动回滚

本节部分内容摘自:https://blog.csdn.net/zzhongcy/article/details/102893309 一、引入依赖 <!-- 核心启动器, 包括auto-configuration、logging and YAML -->...

spring boot配置事务(事务回滚)

spring boot配置事务(事务回滚)

在业务层(service)中难免存在要先后操作多张表的业务逻辑,如前端完成一个操作,后台需要对数据库三张表进行操作,如若任意一个操作事务,这几个操作都应该不允许被实现,即回到操作前,解决方法是开启事务,让其在出错时实现事务回滚作用。 如:有以下三个...

SpringBoot2.x学习-事务管理

一、事务介绍 1、数据库事务:是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。这些操作要么全部执行成功提交(commit),要么全部中止失败(abort,rollback)。就是在数据库执行多条SQL语句,要么都执行成功,...

SpringBoot中添加事务

今天项目中需要使用到事务,所以在这里将SpringBoot的事务实现方式学习一下 SpringBoot中使用事务会使用到@Transactional这个注解来实现   先来对Transactional注解有个大致了解   1.其上注解...

springboot 默认事务 代码示例

springboot 默认事务 代码示例

springboot 默认事务 代码示例 Ⅰ同一个类内默认传播行为的调用 1.1 方法addTeacher带默认传播行为的事务调用没事务的方法updateTeacher @Transactional(propagation = Pro...

SpringBoot多数据源配置事务

在多数据源中配置事务,其实对于SpringBoot来很简单,当然这个的前提是首先把多数据源都配好的情况下,如果不会多数据源配置,请看该系列 SpringBoot整合多数据源 首先在启动类配置 @SpringBootApplication @E...

springboot事务管理

我的一个项目:maven多模块,springboot启动 在启动类加上了@EnableTransactionManagement注解, @SpringBootApplication @EnableTransactionManagement public class A...

SpringBoot jpa事务注解详解

SpringBoot jpa事务注解详解

@Transactional spring 事务注解 1.简单开启事务管理 @EnableTransactionManagement // 启注解事务管理,等同于xml配置方式的 <tx:annotation-driven /> 2.事务注解详...

Springboot事务配置

在一个config类名上面加入注解,用来开启事务 @EnableTransactionManagement 再加入一个BEAN类来配置事务 @Bean public DataSourceTransactionManager transactionMa...

浅谈SpringBoot事务处理

浅谈SpringBoot事务处理

什么是事务 所有数据访问技术都有事务机制,这些技术提供了API来开启事务、提交事务完成数据操作,或者在发生错误的时候回滚数据。 Spring采用统一的机制来处理不同的数据访问技术的事务,Spring的事务提供一个 PlatformTransactionManager...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。