spring使用@Transactional注解,发现错误,能否指定回滚方式呢 [问题点数:40分,结帖人u012318873]

Bbs3
本版专家分:649
结帖率 66.67%
Bbs1
本版专家分:60
Bbs5
本版专家分:3625
Blank
黄花 2016年10月 Java大版内专家分月排行榜第二
Blank
蓝花 2016年9月 Java大版内专家分月排行榜第三
关于spring中@Transactional注解抛出异常不回滚的现象
今天在开发中,遇到了如题这样的问题,我自己手动抛出异常,数据还是会写入的数据库中,并且不会发生<em>回滚</em>,导致产生了垃圾数据。后来上网查了一下,发现<em>spring</em>中,<em>注解</em>的事务<em>回滚</em>是默认RunTimeException才会<em>回滚</em>,如果抛出的不是RunTimeException,<em>spring</em>是默认不会<em>回滚</em>的。  并且,你的程序中try catch了,哪怕是RunTimeException,也是不会<em>回滚</em>的。一定
spring @Transactional注解用于事务回滚案例
这里基于小编的这篇博文的<em>spring</em>配置和实体类,service类为基础,解释@Transactional<em>注解</em>: https://blog.csdn.net/csdnliuxin123524/article/details/80935836; 注意这里@Transcational<em>注解</em>起作用的前提是要<em>使用</em><em>spring</em>的声明式事务: &amp;lt;!-- 配置声明式事务 --&amp;gt; &amp;...
关于Spring注解式事务@Transactional的简单描述
一、背景: 目前很多项目的事务处理都是利用Spring的<em>注解</em>式事务实现的(@Transactional)。 在测试事务<em>回滚</em>的过程中发现如下现象: throw new RuntimeException("xxxxxxxxxxxx"); 事务<em>回滚</em> throw new Exception("xxxxxxxxxxxx"); 事务没有<em>回滚</em> 二、关于<em>spring</em>事务使...
关于Spring的@Transactional注解失效以及事务无法回滚问题
关于Spring的@Transactional<em>注解</em>失效以及事务无法<em>回滚</em>问题@Transactional失效问题最近写的项目中需要一个service中的部分事务执行完就被commit,但是部分service需要失败<em>回滚</em>。因此写在一个大的service中并且加上@Transactional显然是无法满足需求的。 因此这是需要把原先的一个service服务拆分,如原先的serviceA被拆分成servic
[spring,mysql] spring使用注解式事务声明(@Transactional)无法回滚
@Transactional事务<em>回滚</em> 在service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。 Spring默认情况下会对运行期例外(RunTimeException)进行事务<em>回滚</em>。这个例外是unchecked 如果遇到checked意外就不<em>回滚</em>。 如何改变默认规则: 1 让checked
Spring进行事务注解之@Transactional
  @Transactional事物<em>注解</em><em>方式</em>(可以标注于类和方法之前)   <em>使用</em>的条件及需要注意的事项: 1.<em>使用</em>必须是java5或者以上; 2.@Transactional都是用在public修饰的可见类或者方法上面,如果在  private,protected  上<em>使用</em>的话,不会报错但是事务会不能生效; 3.建议将该<em>注解</em><em>使用</em>在具体的类或者方法上,不要<em>注解</em>在接口上面,因为<em>注解</em>是...
@Transactional事务回滚不生效,注解的继承
关于<em>注解</em>的继承 刚在群里有个人问怎么事务<em>回滚</em>不生效,然后截图一看,@Transactional打在接口上。这毫无疑问就是错误的根源,让他把@Transactional写在实现方法上就解决了。 众所周知,<em>注解</em>一般不能被继承。但是准确的说, 子类其实是可以继承父类的type<em>注解</em>的,如果需要继承父类的方法上的<em>注解</em>,就需要加一个@Inherited元<em>注解</em>。 关于元<em>注解</em>大家可通过 https://blog....
关于Spring事务回滚@Transactional使用记录
测试@Transactional的在处理异常时是否生效, 首先这里随便写一个update的方法,对数据库进行更新操作,然后在操作完之后抛一个异常 @Override @Transactional(rollbackFor = {Exception.class}) public String alterUser(){ try { User ...
被忽略的Spring3小改进—支持多数据源的@Transactional事务注解
问题描述有个项目在配置Spring事务时,<em>使用</em>了@Transactional<em>注解</em>,但这个项目<em>使用</em>了多个数据源,而事务<em>注解</em>只对第一个起作用,咋办?探幽先回顾一下之前个人习惯<em>使用</em>的 + 配置<em>方式</em>,大致步骤如下: 1)定义与事务管理器对应的事务通知 2)配置需要拦截的方法调用切面 3)将切入点连接到相应的事务通知 整个系统的事务,三下配置,一处搞定,相比<em>注解</em><em>方式</em>,个人觉得更简单、省力、
Spring中声明式事务的注解@Transactional的参数的总结(REQUIRED和REQUIRES_NEW的与主方法的回滚问题)
一、事务的传播行为 1.介绍 当事务方法被另一个事务方法调用时,必须<em>指定</em>事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己的事务中运行。 2.属性 事务的传播行为可以由传播属性<em>指定</em>。Spring定义了7种类传播行为。 系统默认的是REQUIRED属性。 常用的是REQUIRED和REQUIRES_NEW,所以此处只说明这两种属性。 下
@Transactional注解事务不回滚不起作用无效
这几天在项目里面发现我<em>使用</em>@Transactional<em>注解</em>事务之后,抛了异常居然不<em>回滚</em>。后来终于找到了原因。 如果你也出现了这种情况,可以从下面开始排查。 一、特性 先来了解一下@Transactional<em>注解</em>事务的特性吧,可以更好排查问题 1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入<em>spring</em>事务管理,在每个业务方法执行时都会开...
Spring中Transactional不添加rollbackFor等属性时的事务回滚问题
昨天同事说Spring的Transactional必须添加rollbackFor = Exception.class,否则事务不会<em>回滚</em>。但我原来试过,抛出RuntimeException时是会<em>回滚</em>的。于是查看Spring的Transactional的API文档,发现下面这段:If no rules are relevant to the exception, it will be treated like DefaultTransactionAttribute (rolling back on runtim
@Transactional注解事务回滚在控制层不起作用
首先需要添加<em>注解</em><em>方式</em>配置事务 controller代码 shopService.insertUserAndShop(shop, adminuser); ShopServiceImpl代码 @Override @Transactional(propagation=Propagati
springboot中关于@Transactional事务注解不能回滚的原因
@Override @Transactional(readOnly = false,rollbackFor=Exception.class,propagation=Propagation.REQUIRED) public ResultBean&amp;lt;String&amp;gt; test(GoodsInfo goodsInfo) { try { GoodsInfo goodsInfo1 ...
Spring添加了注解@Transactional事务不回滚总结
Spring加@Transactional事务不<em>回滚</em> 二、总结 1.首先你要确保你的配置文件正确,当然这个可能性很低,因为架构师都帮你弄好了(针对和当时的我一样的小白而言) 2.如果你的配置文件都正确,那么很有可能你执行数据库更新、插入的时候加了 try  catch 了,所以不
代码抛出异常后进行事务回滚的两种方式(Spring @Transactional注解
需求 在service层的某个方法中,在执行完一个对数据库的写方法后,抛出异常,再执行另一个对数据库的写方法,伪代码如下: @Transactional public void func() { dao.write(pojo1); throw new Exception(&amp;amp;amp;quot;异常&amp;amp;amp;quot;); dao.write(pojo2); } 要求此时事务全部<em>回滚</em>,即pojo1和pojo2都不写进数据库。 单...
spring boot @Transactional注解事务不回滚不起作用无效
参考资料:https://blog.csdn.net/u011410529/article/details/54287307https://my.oschina.net/happyBKs/blog/1624482当@Transactional不起作用如何排查问题。可以按照以下几个步骤逐一确认:1、首先要看数据库本身对应的库、表所设置的引擎是什么。MyIsam不支持事务,如果需要,则必须改为Innn...
Spring MVC @Transactional注解方式事务无法回滚的解决办法
前文提到,最新换了框架,新项目用SpringMVC + <em>spring</em> JdbcTemplate。搭框架时,发现了一个事务无法正常<em>回滚</em>的问题,记录如下:首先展示问题:Spring applicationContext.xml配置:[html] view plaincopy           <bean id=“dataSource” class=“org.<em>spring</em>framework.jndi.
@Transactional注解事务手动回滚并且返回错误信息
service层方法名<em>注解</em> @Transactional(rollbackFor=Exception.class) try{ }catch (Exception e) {  e.printStackTrace();  //打印错误信息 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); //手动回...
@Transactional注解回滚问题
@Transactional(rollbackFor=Exception.class) 这个的意思是<em>指定</em><em>回滚</em>的异常,我直接就<em>指定</em>了Exception。也就是只要是Exception或者是Exception的子类,那么在此方法中,都会进行<em>回滚</em>。当然,还有notRollbackFor,这个是<em>指定</em>异常不<em>回滚</em>。 原文:https://blog.csdn.net/singgel/article/detail...
Spring MVC @Transactional注解方式事务无法回滚原因及解决方案
近期在做一个接口,采用的是Spring MVC的框架写的,但是当配置好框架,写完方法之后,发现在service层加了@Transactional<em>注解</em>的<em>方式</em>,竟然无效,无法进行事务的<em>回滚</em>,发现一般问题都不存在,一般@Transactional<em>注解</em>了,事务无法<em>回滚</em>是因为三个原因: 1.方法可能不是public的声明 2.异常类型是不是unchecked异常 这个说明一下,在@Transactio...
难经7:被忽略的Spring3小改进——支持多数据源的@Transactional事务注解
难经7:被忽略的Spring3小改进——支持多数据源的@Transactional事务<em>注解</em> liuu.iteye.com 2011-3-23 [问题] 近日,有同事问起,有个项目在配置Spring事务时,<em>使用</em>了@Transactional<em>注解</em>,但这个项目<em>使用</em>了多个数据源,而事务<em>注解</em>只对第一个起作用,咋办?   [探幽] 一听之下,想起在用@Transactiona...
声明式事务不回滚@Transactional的避坑正确使用
在我们开发中很多时候都要用到事务,例如转账等等的操作,这些我就不多BB了,哈哈。下面我来说下关于Spring的声明式事务@Transaction的坑,我想最大的坑应该还是代理事务不生效的问题,下面放个链接,以免别人问。https://blog.csdn.net/weixin_41485592/article/details/80031597下面我要说的又是一个坑,也是声明式事务不<em>回滚</em>的问题。重点来...
Spring @Transactional注解使用注意事项
1 注意设置rollbackFor属性,很多博客说默认只有RuntimeExcetion会触发<em>回滚</em>,经验证确实如此,所以rollbackFor最好应该设置如下:rollbackFor = {Exception.class},当然具体业务具体处理,可能有的业务抛出的某些异常并不需要触发<em>回滚</em>,所以此时应该细化处理异常。   2 MySQL数据库表引擎应为InnoDB,否则不支持事务。但是XML...
springboot2.X版本得@Transactional注解事务不回滚不起作用
参考文章  https://my.oschina.net/happyBKs/blog/1624482   https://blog.csdn.net/u011410529/article/details/54287307 基本涵盖了事务所有得解决方法  我得情况是 在一个service中的一个没有事务管理得方法,调用了一个有事务管理得方法,在这种情况下 <em>spring</em>容器是不知道,所以事务是不起...
被忽略的Spring3小改进——支持多数据源的@Transactional事务注解
 难经7:被忽略的Spring3小改进——支持多数据源的@Transactional事务<em>注解</em> liuu.iteye.com 2011-3-23 [问题] 近日,有同事问起,有个项目在配置Spring事务时,<em>使用</em>了@Transactional<em>注解</em>,但这个项目<em>使用</em>了多个数据源,而事务<em>注解</em>只对第一个起作用,咋办?   [探幽] 一听之下,想起在用@Transactional配置
(MySQL)Spring3+Mybatis3使用注解式事务声明(@Transactional)无法回滚
按以下步骤进行检查: 1、检查下Spring3配置没问题(略); 2、检查Log4J日志输出,确实有进行事务<em>回滚</em>动作; 3、检查下MySQL后台日志输入,确实有进行“rollback”操作; 上网查找一番,终于找到解决方法!原来执行事务<em>回滚</em>的表默认“表类型=MyISAM“(网上说:MyISAM不支持事务!这个我不太清楚) <em>使用</em>如下语句更改表类型为”InnoDB“: alter tabl
Spring事务异常回滚。TransactionAspectSupport(学习理解)
例:      类似这样的方法不会<em>回滚</em> (一个方法出错,另一个方法不会<em>回滚</em>) :   if(userSave){    try {    userDao.save(user);    userCapabilityQuotaDao.save(capabilityQuota);    } catch (Exception e) {    logger.info(&quot;能力开通接口,开...
注解@Transactional 出现异常不回滚 不起作用
关于<em>使用</em><em>注解</em>@Transactional,手动抛出异常不<em>回滚</em>现象总结: 我用的是自定义异常直接继承Exception异常,在实际操作中,出现异常后没有<em>回滚</em>,还是把数据写入数据库了。 查了一下资料,只有runtimeexception并且没有被try catch处理的异常才会<em>回滚</em>。另外Transactional可以<em>指定</em><em>回滚</em>异常,然后我用@Transactional(rollbackFor=Exc...
Spring中@Transactional事务回滚(含实例详细讲解,附源码)
一、<em>使用</em>场景举例在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了。这时候我们希望如果成员删除失败了,之前删除的部门也取
单元测试 @Transactional 注解
简单的对比介绍下用 @Transactional <em>注解</em>和 不<em>使用</em>的区别 @Before public void setUp() throws Exception { Software software = new Software(); software.setViewable(false); software.setSoftChName("r
使用spring中的@Transactional注解时,可能需要注意的地方
原文地址:https://www.cnblogs.com/GarfieldEr007/p/7077930.html在编写业务层方法时,会遇到很多需要事务提交的操作,<em>spring</em>框架为我们提供很方便的做法,就是在需要事务提交的方法上添加@Transactional<em>注解</em>,比起我们自己开启事务、提交以及控制<em>回滚</em>,要简单的多。但是在<em>使用</em>的时候容易犯一些错误。我就自己的错误经历总结如下。枯燥的背景知识(可以...
Spring MVC @Transactional注解方式事务失效的解决办法
前文提到,最新换了框架,新项目用SpringMVC + Spring JdbcTemplate。搭框架时,发现了一个事务无法正常回归的问题,记录如下: 首先展示问题: Spring applicationContext.xml配置: java:comp/env/jdbc/will txManager
spring中事务@Transactional失效,不回滚
我在<em>spring</em>中<em>使用</em>@Transactional标注后,发现并没有效果,多方求解最终找出原因。以下是一些<em>使用</em>此标签的注意事项,如果不按这些规矩来就会失效: 1、在Spring启动项中开启事务 @EnableTransactionManagement 2、@Transactional只作用于public方法上,如果方法是private等其他作用域就不起作用 3、如果@Transaction...
spring结合mysql事务注解@Transactional不起作用的问题
最近遇到的一个比较诡异的问题,貌似各种配置都正确了,事务不起效。 首先resin服务器的配置文件连接数据库的配置如下: &amp;lt;database&amp;gt; &amp;lt;jndi-name&amp;gt;jdbc/bbs7_app&amp;lt;/jndi-name&amp;gt; &amp;lt;driver&amp;gt; &amp;lt;type&amp;gt;com.mysql.jdbc.jdbc2.optional.My...
SpringMVC @Transactional注解方式事务失效的解决办法
SpringMVC @Transactional<em>注解</em><em>方式</em>事务失效的解决办法
Spring Boot 中使用 @Transactional 注解配置事务管理
事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种<em>方式</em>。编程式事务指的是通过编码<em>方式</em>实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际<em>使用</em>中声明式事务用的比较多。
需要在Transactional注解指定rollbackFor或者在方法中显示的rollback
需要在Transactional<em>注解</em><em>指定</em>rollbackFor或者在方法中显示的rollback 芥末无疆sss 关注2018.02.14 01:53 字数 842 阅读 39评论 0喜欢 3由Java阿里巴巴规范提示得,今日探究其原因1. 先看异常的分类error是一定会<em>回滚</em>的这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常可查的异常(checked...
Springboot中声明事务@Transactional,为何有时候声明了事务报异常数据却不会回滚
@Transactional 这个<em>注解</em>相信大家都不陌生,这是事务的<em>注解</em>,什么是事务,无非就是未保证数据一致性,当出现任何异常时候出现数据<em>回滚</em> <em>注解</em>是是不需要写提交事务的。 那么,最近我发现,这个@Transactional的<em>注解</em>,并不是所有异常都可以进行数据<em>回滚</em>,他只有是RuntimeException类及其子类(中文称为:运行时异常/unchecked异常/未检异常)异常的时候才会进行数据...
@Transactional注解事务不回滚不起作用无效(转载)
原文请查看 这几天在项目里面发现我<em>使用</em>@Transactional<em>注解</em>事务之后,抛了异常居然不<em>回滚</em>。后来终于找到了原因。 如果你也出现了这种情况,可以从下面开始排查。 一、特性 先来了解一下@Transactional<em>注解</em>事务的特性吧,可以更好排查问题 1、service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入<em>spring</em>事务管理,在每个业务方法执行时都会开...
Spring MVC中关于@Transactional注解使用
上个月在搞毕业设计的时候,需要对在程序中对更新、插入语句进行事务管理,当用户输入不合理或者出现某种异常的时候及时的<em>回滚</em>事务,保证数据的正确性。在网上查找相关资料得知大多数时候用的是@Transactional这个<em>注解</em>,关于这个<em>注解</em>的<em>使用</em>方法和自己遇到的问题我整理为以下几点: 第一步:除了Spring MVC的ApplicationContext的常规配置(诸如dataSource之类),需要配置
springboot使用注解方式实现回滚
1.在实现增删改的时候只需在执行的方法上添加<em>注解</em>: @Transactional(propagation = Propagation.REQUIRED) eg: @Override @Transactional(propagation = Propagation.REQUIRED) public void is_order_taking(Order order) { orderMappe...
Spring中配置事物注解方式: @Transactional
事物传播行为介绍:    @Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)   @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务   @Transactional(propagation=Pr
运用@Transactional,自己抛出异常时不会回滚的原因
一、 当你读这篇文章的时候,假如读者是在整合j2EE的三大框架式遇到这个问题,那应该就是下面这个问题:         我记得当时我遇到这个问题的时候,是因为数据库的表,不支持事务!如果mysql不支持存储引擎,它将以MyISAM表创建表,这是非事务性表。一般修改成InnoDB.       假如有兴趣了解 mysql中 " engine=innodb " 以及 " engine=inno
SpringCloud学习笔记009---杂七杂八003:spring的@Transactional注解详细用法
概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。 Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects) 支持...
Spring中@Transactional事务回滚失效
一、<em>使用</em>场景举例在了解@Transactional怎么用之前我们必须要先知道@Transactional有什么用。下面举个栗子:比如一个部门里面有很多成员,这两者分别保存在部门表和成员表里面,在删除某个部门的时候,假设我们默认删除对应的成员。但是在执行的时候可能会出现这种情况,我们先删除部门,再删除成员,但是部门删除成功了,删除成员的时候出异常了。这时候我们希望如果成员删除失败了,之前删除的部门也...
Spring注解声明的事务@Transaction出现异常后没有回滚
今天用<em>spring</em>+hibernate做项目的时候,测试事务是否起作用的时候, 发现了一个问题,我在service层,同时更新两张表。 第一张表的dao层更新方法正常更新, 第二张表的dao层故意让其抛异常。 代码如下: service层: @Transaction public void saveInfo(Flight flight,Passenger passenger){ fl
Spring 从同一个类中的某个方法调用另一个有注解(@Transactional)的方法时,失效的解决方案
考虑有下面这么一个类public class Foo { @Transactional public void bar() { /* … */ } public void baz() { this.bar(); } }可能会有不少人会跟我一样,觉得上面这种<em>方式</em>调用 baz()方法时,bar()上的@Transactional<em>注解</em>还是会起作用的,即bar(
spring注解事务与try catch 异常处理
Spring的默认事务机制,当出现unchecked异常时候<em>回滚</em>,checked异常的时候不会<em>回滚</em>; 异常中unchecked异常包括error和runtime异常,需要try catch或向上抛出的异常为checked异常比如IOException,也就是说程序抛出runtime异常的时候才会进行<em>回滚</em>,其他异常不<em>回滚</em>,可以配置设置所有异常<em>回滚</em>:  [html] view
【问题解决】SSM-@Transactional注解事务无效探讨
Spring SpringMVC MyBatis框架中-@Transactional<em>注解</em>事务无效解决方法SpringMVC-Spring-MyBatis框架 数据库:SQL SERVER 2008 以前都是用的MySQL数据库,没有出现这个问题,现在换成sql server了,结果事务没有起作用了。 经过一番测试: 排除以下几个问题: 1.数据库原因,不存在的。MySQL中只有InnoDB
spring项目中添加@Transactional注解后出现NoSuchBeanDefinitionException异常的解决方法
配置文件里这一句&amp;lt;tx:annotation-driven transaction-manager=&quot;transactionManager&quot;/&amp;gt; 改成 &amp;lt;tx:annotation-driven transaction-manager=&quot;transactionManager&quot; proxy-target-class=&quot;true&quot;/&amp;gt;  proxy-target-class=&quot;...
从Spring AOP的原理理解@Transactional失效问题
在正确配置了Spring事务管理后,或许在某些场景下,你可以写出如下代码: class T { public int createFirst(){ //dosometing.... try { this.createSecond(); }catch (Exception e){ throw e; ...
关于加@Transactional注解的方法之间调用,事务是否生效的问题
之前面试被问过这个问题,回答基本靠猜,在此记录一下事务方法调用的问题。1. 不同类之间的方法调用,如类A的方法a()调用类B的方法b(),这种情况事务是正常起作用的。只要方法a()或b()配置了事务,运行中就会开启事务,产生代理。若两个方法都配置了事务,两个事务具体以何种<em>方式</em>传播,取决于设置的事务传播特性。2. 同一个类内方法调用:重点来了,同一个类内的方法调用就没那么简单了,假定类A的方法a()...
刚接触SprngBoot时使用@Transactional注解不起作用导致事务失效的原因。
刚接触SprngBoot,发现一个小猫腻,就是在做简单的事务管理操作时,在方法上打上@Transactional<em>注解</em>不起作用,自己在里面被坑了好久。后来又在启动类上开启@EnableTransactionManagement,也没起作用。最后发现是框架根据实体类自动生成的表用的是MyISAM引擎,其不支持事务处理等高级处理,而InnoDB类型支持。因此,特意研究了一下MyISAM与InnoDB的区
事务@Transactional和异步@Async注解失效
问题场景重现 场景一: Spring的异步执行<em>注解</em>@Async,在调用这个方法的时候发现,不对劲,耗时的逻辑我已经加入到异步取做了,怎么接口请求的响应这么慢,赶紧看日志,懵X,加了异步<em>注解</em>,却没有异步执行。 场景二: 在项目中用到@Transactional<em>注解</em>实现事务是必须滴,如果你还在用xml配置,那我只能说……。  但是有时候我们会发现在方法上加了@Transactional<em>注解</em>却...
@Transaction注解的理解以及手动回滚事务的2种方法
1、@Transaction<em>注解</em>的含义 在业务逻辑处理中,service层的某个方法<em>使用</em><em>注解</em>@Transaction,代表统一开启事务,该业务操作具有原子性,要么一起提交,要么都不成成功。 2、什么情况下会手动<em>回滚</em>事务? a.业务方法中出现运行期异常,例如runtimeException, b.手动编程<em>方式</em>设置<em>回滚</em>:  TransactionAspectSupport.currentTra
JPA的事务注解@Transactional总结
@Transactional事务<em>使用</em>总结: 异常在A方法内抛出,则A方法就得加<em>注解</em> 多个方法嵌套调用,如果都有 @Transactional <em>注解</em>,则产生事务传递,需要 Propagation.REQUIRED 如果<em>注解</em>上只写 @Transactional 默认只对 RuntimeException <em>回滚</em>,而非 Exception 进行<em>回滚</em> 如果要对 checked Exceptions 进...
springboot使用@Transactional注解无效,无法完成事务管理操作
Springboot2.0后,<em>使用</em>jpa操作数据库,发现默认创建表是myisam引擎,而不是innodb,myisam不支持<em>使用</em>@Transactional<em>注解</em> mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的 问题解决方法: 把application.yml文件里面的数据库引擎改为innodb <em>spring</em>: profiles...
Spring事务超时、回滚的相关说明
事务超时: @Transactional(timeout = 60) 如果用这个<em>注解</em>描述一个方法的话,线程已经跑到方法里面,如果已经过去60秒了还没跑完这个方法并且线程在这个方法中的后面还有涉及到对数据库的增删改查操作时会报事务超时错误(会<em>回滚</em>)。如果已经过去60秒了还没跑完但是后面已经没有涉及到对数据库的增删改查操作,那么这时不会报事务超时错误(不会<em>回滚</em>)。 <em>回滚</em>: Spri
atomikos 配置好后 @transactional 注解不生效的问题
最近这几天玩分布式事务的,<em>使用</em>  atomikos ,配置好  atomikos  后再Service层添加事务<em>注解</em>,可是一直有个问题,<em>注解</em>不生效。刚开始以为表不支持事务,可看了一下表类型是InnoDB ,是支持事务的。  后来我尝试通过硬代码  jtm.getUserTransaction().begin(); 和 jtm.getUserTransaction().commit(); 却是有事务
Spring事务机制中@Transactional失效的原因
最近项目中发现<em>spring</em>事务机制中@Transactional会失效,一个方法抛出异常,但是数据库中修改的数据并不会<em>回滚</em>,于是看了一些资料,发现以下情况@Transactional事务会失效。 1.首先检查配置,在项目的<em>spring</em>配置文件检查是否配置开启事务 org.<em>spring</em>framework.jd
spring声明式事务@Transactional详解(转)
https://www.ibm.com/developerworks/cn/java/j-master-<em>spring</em>-<em>transactional</em>-use/index.html 内容很详细,在这里我给自己当个备注,也给大家提供个方便
Transactional注解无效,不支持回滚问题(1)
目前在学习SpringBoot,在<em>使用</em> @Transactional 后,出错无法<em>回滚</em> 一开始是以为没捕捉到异常,于是写成 @Transactional(rollbackFor = Exception.class) 重新跑起来后,还是不能<em>回滚</em>(即还是有数据插入到库)。 检查代码也是与学习视频中的代码一致。   百度了解到: SpringBoot2.0中,Hibernate创建Mysq...
问题:数据库自动提交 autoCommit = true与@Transactional注解的问题?
遇到一个问题: 我的数据库连接池,设置的autoCommit = true然后在一个方法上,我又加了@Transactional<em>注解</em>,Spring执行到一个方法,扫描到@Transactional<em>注解</em>后,会自动执行Spring事务管理器,事务管理器会把当前获得的数据库连接对象conn的autoCommit给设置成false.那么问题来了:当执行完这个方法后,Spring还会把这个数据库连接对象设置...
Spring 注解事物@Transactional开发和源码分析
Spring <em>注解</em> 事物开发一、声明式事务: 环境搭建: 1、导入相关依赖 数据源、数据库驱动、Spring-jdbc模块&amp;lt;dependency&amp;gt;    &amp;lt;groupId&amp;gt;org.<em>spring</em>framework&amp;lt;/groupId&amp;gt;    &amp;lt;artifactId&amp;gt;<em>spring</em>-jdbc&amp;lt;/artifactId&amp;gt...
Spring提取@Transactional事务注解的源码解析
声明:本编文章是自己在查看Spring提取@Transactional<em>注解</em>的源码过程中随手记下的笔记,只做了大概流程的记录,未做详细分析,如有错误还请谅解。1、事务切面匹配处理类AopUtils#canApply(Pointcut, Class , boolean) 方法中会调用到 TransactionAttributeSourcePointcut#matches 方法public stati
Spring之@Transactional注解原理以及走过的坑
一般情况下我们在处理具体的业务都是在Service层来进行处理操作,此时如果在Service类上添加@Transactional<em>注解</em>的话,那么Service曾的每一个业务方法调用的时候都会打开一个事务。 —————————————————————————————————————————————————— 注意点: Spring默认情况下会对(RuntimeException)及其...
spring事务不回滚throw的Exception异常的解决方法
<em>spring</em>事务中,throw的Exception异常事务不会<em>回滚</em>,原因是: 用 <em>spring</em> 事务管理器,由<em>spring</em>来负责数据库的打开,提交,<em>回滚</em>.默认遇到运行期例外(throw new RuntimeException("注释");)会<em>回滚</em>,即遇到不受检查(unchecked)的例外时<em>回滚</em>;而遇到需要捕获的例外(throw new Exception("注释");)不会<em>回滚</em>,即遇到受检查
数据库Transactional注解的用法,由问题【方法【xxxx】需要在Transactional注解指定rollbackFor或者在方法中显示的rollback】引入
java阿里巴巴规范提示:方法【xxxx】需要在Transactional<em>注解</em><em>指定</em>rollbackFor或者在方法中显示的rollback。先来看看异常的分类error是一定会<em>回滚</em>的这里Exception是异常,他又分为运行时异常RuntimeException和非运行时异常           可查的异常(checked exceptions):Exception下除了RuntimeExcept...
关于Spring的Transactional注解作用范围
Spring的@Transactional<em>注解</em>是可继承的了(Spring4.1)
@Transactional注解工作原理
一、配置好Bean实例 首先配置好DataSource和DataSourceTransactionManager这两个类的Bean实例 二、添加<em>注解</em> 在测试类上添加@Transactional<em>注解</em> 三、工作原理 运行配置@Transactional<em>注解</em>的测试类的时候,具体会发生如下步骤 1)事务开始时,通过AOP机制,生成一个代理connection对象,并将其放入Da
解决springmvc web项目中 @Transactional事物注解失效问题 并深入源码分析问题
首先先描述一下问题,用测试用例测试事物方法,测试很成功,方法无异常,数据插入成功,方法中抛出错误,事物<em>回滚</em>,插入失败。后面用tomcat跑这个web项目,发现这个事物方法上的事物<em>注解</em>@Transactional失效了。下面还原这个过程,并在还原后,进行问题解决以及源码分析。不想看还原过程的,可以直接跳到后面,继续观看。 下面贴出部分,供后续分析<em>使用</em> public interface ...
@Transactional注解不起作用解决办法及原理分析
Transactional失效场景介绍 第一种 Transactional<em>注解</em>标注方法修饰符为非public时,@Transactional<em>注解</em>将会不起作用。例如以下代码。 定义一个错误的@Transactional标注实现,修饰一个默认访问符的方法 /** * @author zhoujy * @date 2018年12月06日 **/ @Component public class Te...
@Transactional注解事务不起作用的解决
可能的原因: 1.数据库引擎要支持事务 如果是mysql,注意表要<em>使用</em>支持事务的引擎,比如innodb,如果是myisam,事务是不起作用的 2.是否开启了对<em>注解</em>的解析 配置文件必须加,否则不解析@Transactional...
spring3多数据源时事务@Transactional注解的qualifier
在Spring2.5之前,@Transactional<em>注解</em>确实不支持多数据源,但是Spring3为其增加了value属性配置,可以<em>指定</em>当前事务通知对应的事务管理器。 这样,在需要的地方<em>指定</em>限定符: public class TransactionalService { @Transactional("order") publ
Spring声明式事务@Transactional传播行为
在@Transactional<em>注解</em>中,可以propagation属性用来配置事务传播,支持7种不同的传播机制: REQUIRED:业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务。这是<em>spring</em>默认的传播行为。 NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事
Spring对于事务的控制@Transactional注解详解
前两天在工作中忙的焦头烂额,涉及到@Transactional对于事务的控制,便仔细研究了一下,颇有所获,花费好了几天测试整理,今天才发表出来,希望看到博客的老铁们能有所获吧。话不多说直奔正题。 先简单介绍一下Spring事务的传播行为: 所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以<em>指定</em>一个事务性方法的执行行为。在TransactionDefini...
Spring中@Transactional注解的深度分析
引言: 在Spring中@Transactional提供一种控制事务管理的快捷手段,但是很多人都只是@Transactional简单<em>使用</em>,并未深入了解,其各个配置项的<em>使用</em>方法,本文将深入讲解各个配置项的<em>使用</em>。 1、@Transactional的定义 Spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题。在现实中,实际的问题
spring的@Transactional注解详细用法 事务与隔离级别(IMP)
转载: https://www.cnblogs.com/yepei/p/4716112.html   概述 事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。 Spring Framework对事务管理提供了一致的抽象,其特点如下: 为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate...
使用Junit单元测试事务无法回滚的问题(spring事务和断路器-Hystrix冲突)
在<em>使用</em>Junit的时间发现事务无法<em>回滚</em>,后来把Hystrix断路由删掉发现可以的,源码调式发现Hystrix和sqlsessionFactory<em>使用</em>的不是同一个contection,最后是将断路由的策略改成信号量(SEMAPHORE)解决的,目前没找到断路由线程池(THREAD)策略和Junit事务共存的办法。综合上述,配置改为如下即可解决:hystrix.command.default.exec...
SpringBoot中级篇-事务@Transactional注解无效
最近遇到了事务不<em>回滚</em>的情况,很多方法都加tyr catch,在catch中打印日志。但是方法异常时候,日志打印了事务却没有<em>回滚</em>。 Spring AOP异常捕获原理 被拦截的方法需显式抛出异常,并不能经任何处理,这样AOP代理才能捕获到方法的异常,才能进行<em>回滚</em>,默认情况下AOP只捕获RunTimeException的异常。 简而言之:就是我们用事务<em>注解</em>后,只能在当前@Transactional注...
SpringBoot @Transactional 中捕获异常并回滚解决方法
业务需求:需要捕获到@Transactional中的异常,并不影响事物<em>回滚</em>@Transactional(rollbackFor = Exception.class) public void test() { try { updata(); updata2(); } catch (Exception e) { ...
spring手动回滚事务
在Spring的配置文件中,如果数据源的defaultAutoCommit设置为True了,那么方法中如果自己捕获了异常,事务是不会<em>回滚</em>的,如果没有自己捕获异常则事务会<em>回滚</em>,如下例: .... 例子如下: @Transactional(rollbackFor = { Exception.class
@Transactional 注解在多线程环境下不生效问题
@Transactional <em>注解</em>在多线程环境下不生效问题 直接上代码 package com.linzi.risk.indicator.service.impl; import com.linzi.risk.common.utils.threadpool.ThreadPoolManager; import com.linzi.risk.indicator.dao.AsyncCommandDao...
Spring 没有注解的方法 调用@Transactional注解方法,不执行
具体环境:在用@Schedule在controller层写了一个定时任务,而在定时任务中需要进行更新的表太多,所以在service层中用@Transactional创建了一个事务进行管理,但是在执行定时任务的时候 根本没有走serviece的业务逻辑。 在网上查了下,点击这里发现和Spring的特性有关,进而按照他的<em>方式</em>进行修改,最后能够正常执行。 转载地址:https://jingyan.b
spring+mybatis 注解事务失效
@Transactional可用要保证: 1必须是父容器加载的 2标注的方法是public 3默认<em>回滚</em>是runtimeException。可通过 @Transactional(rollbackFor={ArithmeticException.class}) 修改 对于第一点说明: web.xml加载顺序是context-param -&gt; listener-&gt; filter...
Spring声明式事务不回滚的问题
疑问,确实像往常一样在service上添加了<em>注解</em> @Transactional,为什么查询数据库时还是发现有数据不一致的情况,想想肯定是事务没起作用,出现异常的时候数据没有<em>回滚</em>。于是就对相关代码进行了一番测试,结果发现一下踩进了两个坑,确实是事务未<em>回滚</em>导致的数据不一致。下面总结一下经验教训:Spring事务的管理操作方法编程式的事务管理实际应用中很少<em>使用</em>通过<em>使用</em>TransactionTemplat...
spring调用内中@Transactional方法事务不起作用的解决方法
@Service public class GirlService { @Autowired private GirlDao girlDao; @Transactional public void insertTwo(){ addTwo(); } @Transactional public void addTwo(...
Spring学习-回滚事务之修改默认回滚类型
今天发现了个奇怪的问题,自定义的异常(extens Exception)抛出的异常既然不会滚,然后查了下资料,原来<em>spring</em>默认<em>回滚</em>RuntimeException(及其下所有子类)。 解决办法: 1.自定义的异常extens RuntimeException 2.在事务文件中改掉默认<em>回滚</em>类型,请看以下代码,rollback-for="",代表的就是要<em>回滚</em>的类,加上Exception就行了
事务注解Transactional在同一个类中调用的失效问题
问题:在Spring管理的项目中,方法A<em>使用</em>了Transactional<em>注解</em>,试图实现事务性。但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致<em>回滚</em>,也即事务失效了。原因:Transactional是Spring提供的事务管理<em>注解</em>。关于事务的概念可参见转载的帖子:Spring事务管理(详解+实例)。重点在于,Spring采用动态代理(AOP)实现对bean的管理和切片,它为我...
springboot dubbo @Service @Transactional 无法提供服务或者无法提供事务的解决办法
趁热项目<em>使用</em><em>spring</em>boot+maven+dubbo提供dubbo服务,由于服务最合适提供到service层,需要做事务控制。经历:   1,先是在<em>spring</em>boot启动类添加<em>注解</em>@EnableTransactionManagement,在对应的服务实现类上添加@Transactional。然后发现不能正常发布dubbo服务了,没有报错,但dubbo-admin就是没有收到服务注册。百度下,...
Spring的@Transactional(readOnly=true)注解,对其效果进行测试
(内容有点乱 之后整理后重新发) 温馨提示:结论在底部,如果没有耐心看证明的话可以直接拉到最底部   今天在<em>使用</em>阿里代码规范插件检查代码的时候发现,代码提示有问题。 错误提示:<em>注解</em>【Transactional】需要设置rollbackFor属性。 我就想,既然是阿里的插件提示的应该比较权威,那我就把这个属性加上去把。 但是转念一想,如果要加的话该怎么加呢,会不会和项目有冲突,我们项...
@Transactional 异常并未回滚
@Transactional 今天测试的同学帮忙测试出一个BUG,说是一个函数中的数据库操作执行失败,但是没有<em>回滚</em>。 期初我很诧异,我明明加了在类上面加了事务引用,怎么没<em>回滚</em>。 查来查去,发现是我对Transactional 了解不够清楚。 默认情况下,Exception是不会引起<em>回滚</em>操作的,RuntimeException才会引起<em>回滚</em>操作。 半瓶
@Transactional 事务回滚 分析
 @Transactional 事务<em>回滚</em> 分析 博客分类: java Hibernate Spring2.5 +   @Transactional 事务<em>回滚</em>   Spring的AOP事务管理默认是针对unchecked exception<em>回滚</em>(运行期异常,Runtime Exception)。 unchecked ,就是不用手工写try catch的
Spring 使用注解方式进行事务管理 /==/ Spring分布式事务实现
<em>使用</em>步骤: 步骤一、在<em>spring</em>配置文件中引入命名空间  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:tx="http://www.<em>spring</em>framework.org/schema/tx"  xsi:schemaLocation="http://www.<em>spring</em>framework.org/schem
方法中既有hibernate又有jdbc,加了@Transactional但事物回滚异常
写接口的时候,如果是数据库模式,经常会需要从对方数据库中直接提取数据,然后稍做处理,插入wms数据库,此时,一般就会在manager中既用到hibernate又用到jdbc,伪代码如下:其中接口getErpCompanyRowData方法是加了@Transactional的。   /**处理单条客户信息*/ 1 public void getErpCompanyRowData(Resul...
spring+mybatis声明式事务@Transaction无效抛出异常不回滚
测试代码如下: 抛出异常不<em>回滚</em>,百度无果,只好下载源码调试,开始对<em>spring</em>源码并不清楚,调试的时候也是晕头转向,经过两天的摸索算是有些初步了解. doGetResource每次都为null(见下图),因为null所以每次都会重新从连接池获取链接, 每次从连接池获取链接就不能保证两次获取的链接是同一个,不是同一个链接就不会支持事务<em>回滚</em>. 突破口就是resources.get()获取的map...
强连通分量及缩点tarjan算法解析
强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   <em>使用</em>tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Time, DFN[N], Low[N]; DFN[i]表示 遍历到 i 点时是第几次dfs Low[u] 表示 以u点为父节点的 子树 能连接到 [栈中] 最上端的点   int
c# 矢量图形编辑绘图 流程图 仿VISIO绘图 源码下载
c# 矢量图形编辑绘图 流程图 仿VISIO绘图 源码。 很不错的绘图源码 相关下载链接:[url=//download.csdn.net/download/mirage1982/5973901?utm_source=bbsseo]//download.csdn.net/download/mirage1982/5973901?utm_source=bbsseo[/url]
工业企业物流外包风险防范下载
全球经济的一体化和消费者个性化需求的不断增加对工业企业应变市场的柔性提出了更高的要求。工业企业需把 主要精力集中在核心业务上, 与全球范围的企业建立战略合作关系, 形成供应链管理模式将非核心的物流业务外包给其他专业 的企业去做, 形成所谓的“物流外包”。文章对工业企业物流外包的风险进行分析, 并提出了工业企业物流外包风险的防范措 施。 相关下载链接:[url=//download.csdn.net/download/shuidaoquc/2282857?utm_source=bbsseo]//download.csdn.net/download/shuidaoquc/2282857?utm_source=bbsseo[/url]
清航计算机网络考研试题冲刺辅导下载
清航计算机网络考研试题冲刺辅导 我从同学那买的 相关下载链接:[url=//download.csdn.net/download/a11a2233445566/2306358?utm_source=bbsseo]//download.csdn.net/download/a11a2233445566/2306358?utm_source=bbsseo[/url]
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 注解学习使用 大数据培训呢
我们是很有底线的