Spring事物不回滚】的更多相关文章

使用spring控制事物,为什么有些情况事物,事物不回滚呢?? 默认spring事务只在发生未被捕获的 RuntimeException时才回滚.   spring aop  异常捕获原理: 被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认情况下aop只捕获RuntimeException的异常, 但可以通过配置来捕获特定的异常并回滚 . 换句话说在service的方法中不使用try catch 或者在catch中最后加上throw new R…
学习spring分布式事务的时候,自己整了个demo,写test测试的时候发先事物没有回滚.此问题和分布式事务没关系.1.在service层引入@Transaction注解 使用 throw new RuntimeException("cao zuo shi bai !!!"); 或者 throw e; 时数据正常回滚直接抛出一个新的异常时,数据正常插入到db中.后来db调试时比较两者的区别,正如测试结果一样. 在判断的时候直接进了else方法. 查证资料后得知,Spring的AOP事…
今天发现个自己的bug,仔细排查后,发现根本原因我在service方法中抛出的异常被控制层的方法捕获了,所以后台页面也只是出现个错误提示,而数据却没有回滚. 解决方式:对自己抛出的异常使用try catch,catch中 使用 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); 这样就可以主动回滚了…
最近项目突然出了点问题,然后发现用Service层下面的一个类的一个方法里的事务居然没有回滚.然后自己写了一个测试方法经过了N次测试都是不回滚.以下是测试方法的一部分: @Transactional(propagation =Propagation.REQUIRED,rollbackFor=RuntimeException.class) public String getOnLineNum(String securecrt){ History his=new History(); his.set…
Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离. 在我完成一个项目的时候,遇到了一个Spring事务不回滚的问题,通过aspectJ和@Transactional注解都无法完成对于事务的回滚,经过查看博客和文档 默认回滚RuntimeException Service内部方法调用 Spring父子容器覆盖 代码已经上传到 https://github.com/morethink/transactional 异常 下面是@Transactional的注…
探讨Spring事务控制中,异常触发事务回滚原理.文章进行了6种情况下的Spring事务是否回滚. 以下代码都是基于Spring与Mybatis整合,使用Spring声明式事务配置事务方法. 1.不捕获异常(一般处理方式) 代码,其中contentMappger.updateWithErrTest(31L); 是SQL语句错误,用来测试回滚. /** * 删除多条记录 */ @Override public ShopResult deleteContentGroup(String[] ids)…
Spring事务管理不能回滚问题 在前段时间学习SpringMVC的练习中,碰到声明式事务管理时,事务不能回滚的情况,通过查看博客和资料,解决了问题. 原因 导致Spring事务管理不能回滚的原因有两个:一是Service内部方法调用,二是使用了try...catch异常. Service内部方法调用 现在我的Service层中,定义一个转账的功能给它加上事务,而另一个方法直接调用并没有事务. @Service public class YHService{ // 开启事务 @Transacti…
最近遇到了事务不回滚的情况,我还考虑说JPA的事务有bug? 我想多了.......    为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚. 例:     类似这样的方法不会回滚 (一个方法出错,另一个方法不会回滚) : if(userSave){ try { userDao.save(user); userCapabilityQuotaDao.save(capabilityQuota); }…
配置测试类 添加如下内容在class前,用于配置applicationContext.xml文件的位置. @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext.xml") *********************** Junit4 不回滚 2012-02-13  @Rollback 表明被注解方法的事务在完成后是否需要被回滚. 如果…
今天客户提出一个新问题,出库一批商品,提示失败了,但是库存数量却减少了.看了一下代码一头雾水,我们的代码加了事物,且捕获异常. 经过调试代码发现就是两个原因导致的 第一.在当前方法的catch中处理了捕获的异常,没有向上抛出异常,事务不能回滚 分析: 1.在Java中异常的基类为Throwable,他有两个子类Exception与Errors,同时RuntimeException就是Exception的子类: 2.RuntimeException,即运行时异常,为非受检(UNCHECKED)异常…