文档章节

Spring @Transactional annotation 不回滚

sucanber
 sucanber
发布于 2015/04/05 11:49
字数 304
阅读 146
收藏 0

1【问题重现】

基于annotation配置,使用

org.springframework.web.WebApplicationInitializer

启动的web app, IoC容器继承自

org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter

而不使用传统的在web.xml 配置方式。

加上一下注解:

 

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "org.richard.wu")
@PropertySource("classpath:jdbc.properties")
@EnableTransactionManagement //事物注解
public class AppConfig extends WebMvcConfigurerAdapter {


}



在service类加上@Transactional后故意在2 update操作之间抛出一个

java.lang.ArithmeticException

 那么问题来了,检验发现第一个update 操作居然没有被回滚!!!

【解决】

仔细看了文档发现spring 的@Transactionl 仅仅在

RunTimeException

才回滚,所以为了让他对所有Exception回滚,必须这样写:

@Transactional(propagation= Propagation.REQUIRED, rollbackFor=Exception.class, readOnly=false)

关键是rollbackFor这个参数。但是改了之后发现还是不能如期回滚,百思不得姐,后来突然想到既然@Transactionl是通过异常类型来触发回滚的,然么关键就是要有异常从方法里面传递出来,再看看代码里面已经把异常部分用try catch住了,恍然大悟,赶紧解除try catch块,果然就ok了。又或者在catch到Exception后再次抛出也是可以的:

try {
        //update 1
        //exception occur here
        //update 2
    }catch (SQLException e){
        throw new SQLException( "出现SQL异常,回滚操作1");
    }

 

 

 

 

 

© 著作权归作者所有

共有 人打赏支持
sucanber
粉丝 8
博文 61
码字总数 14349
作品 0
浦东
私信 提问
jfinal 如何使用spring事物管理?

applicationContext.xml配置 spring注解事物已经开启、 ActiveRecordPlugin数据源也是spring bean获取的,service也是spring注入的 为什么在service使用@Transactional注解不回滚?...

hybridtheorylink
2017/03/21
99
0
Spring3事务管理——使用@Transactional 注解

先让我们看代码吧! 以下代码为在“Spring3事务管理——基于tx/aop命名空间的配置”基础上修改。首先修改applicationContext.xml如下: …<!-- 定义一个数据源 --><bean id="dataSource" cla...

guanzhenxing
2014/03/30
0
1
Spring 中常用的两种事务配置方式以及事务的传播性、隔离级别

一、注解式事务 1、注解式事务在平时的开发中使用的挺多,工作的两个公司中看到很多项目使用了这种方式,下面看看具体的配置demo。 2、事务配置实例 (1)、spring+mybatis 事务配置 (2)、...

哲别0
2018/04/20
0
0
Spring 注解方式实现 事务管理

使用步骤: 步骤一、在spring配置文件中引入tx:命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="h......

北方攻城师
2014/08/10
0
0
Spring 使用注解方式进行事务管理

使用步骤: 步骤一、在spring配置文件中引入tx:命名空间 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="h......

binhu
2014/07/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

移植Modbus到STM32F103(2):移植FreeModbus到usart3并运行示例代码

FreeModbus是Modbus的一个被广泛移植的实现。其源码在github,最新版是1.6。 FreeModbus支持Modbus功能码里的0x01~0x06,0x0F~0x11和0x17,对一些功能比如异常诊断和读事件计数等功能码并没有...

Konstantine
今天
3
0
浅谈神经网络(神经网络篇)

背景 之前写过浅谈神经网络基础篇,简单介绍下机器学习这块内容,用于扫盲。本文正式将神经网络,这部分是深度学习的基础。了解完可以掌握强大的机器学习的方法,也可以更好的了解深度学习。...

Uknowzheng
今天
4
0
移动硬盘变为RAW格式后的修复

在Mac上使用自己的移动硬盘结果文件系统格式变为RAW; 在自己windows笔记本上使用chkdsk H: /F进行修复,修复日志如下: C:\Users\mengzhang6>chkdsk H: /F文件系统的类型是 NTFS。卷标是 do...

晨猫
今天
3
0
10 Git —— 标签管理

10 Git —— 标签管理 本节内容: 命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;命令git......

lwenhao
今天
4
0
小程序设置垂直居中,水平居中

如果子容器中的view需要居中的话,那需要在父容器中设置居中 水平居中: display: flex; flex-direction: column; align-items: center; 垂直居中 display: flex;align-items: cen...

淘幻幻
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部