资讯专栏INFORMATION COLUMN

spring事务增强,事务回滚如何判断?希望在前端上有个提示

geekidentity / 876人阅读

摘要:中人为的创建出一个异常,测试回滚在中可以被判断。手工抛出,作用有两个,使用事务增强,对事务回滚。中可以捕获该异常,并处理,例在前端显示提示信息。例子结果说明事务增强可以通过进行事务增强。事务发生回滚时,可以判断事务发生了回滚,并处理。

1 主要处理思路 1.1 思路1

事物回滚,一般抛异常,可以自己手写一个异常,根据异常判断。事物还是按照 spring 的之前的逻辑。只是,手工抛特定的异常。这样你就可以捕获这个异常给前台用户。

1.2 思路2

方法捕获异常抛出即可,记得方法定义必须抛出异常,否则框架捕获不到,声明式事物不起作用。

1.3 总结

我认为上述思路在实现上是统一的。下面给出一个用伪代码描述的例子。

MyException:
public class MyException extends RuntimeException { 
    public MyException(){
    }
}

Action中:
@Autowired
public class XAction {
    @Autowired
    private XServicexService xService;
    
    public String AddXmethod(){
        try {
            xService.addX (x); //将x存入数据库
        } catch (MyException e) {
            System.out.println("service层出异常了....");
            //其它处理,例:加上需要在前端显示的提示信息。
        }    
    }
}

xService中:
@Service
@Transactional(propagation=org.springframework.transaction.annotation.Propagation.REQUIRED)
public class XService{

    @Autowired
    private XDao xDao;
    
    public void addX (X x) throws MyException {
    
        xDao.addX(x);
        
        //人为的创建出一个异常,测试回滚在action中可以被判断。
        try {
            int a =10/0; 
        } catch (Exceptione) {
       
            //手工抛出,作用有两个,
            //1、使用spring事务增强,对事务回滚。
            //2、action中可以捕获该异常,并处理,例:在前端显示提示信息。
            throw new MyException();
        }
    }
}

例子结果说明:
1、事务增强可以通过SpringAOP进行事务增强。
2、事务发生回滚时,Action可以“判断”事务发生了回滚,并处理。

2 参考文献

http://www.jb51.net/article/3... (Spring事务管理只对出现运行期异常进行回滚改变默认方式)
http://www.cnblogs.com/0201zc...(spring 事务回滚)
http://blog.csdn.net/gaowenmi... (spring AOP的异常拦截)
http://www.cnblogs.com/zhuawa... (关于Spring事务回滚的问题)
https://www.oschina.net/quest... (spring的事务insert操作怎么判断是否执行成功了还是回滚了)
济南java技术交流群群主隐士的思路与百度用户mahl8007的思路。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71590.html

相关文章

  • Spring嵌套事务是怎么回滚的?

    摘要:希望当注册课程发生错误时,只回滚注册课程部分,保证用户信息依然正常。期待结果是即便内部事务发生异常,外部事务俘获该异常后,内部事务应自行回滚,不影响外部事务。综上外层事务是否回滚的关键,最终取决于,该方法返回值正是在内层异常时设置的。 ...

    vboy1010 评论0 收藏0
  • 面试分享:最全Spring事务面试考点整理

    摘要:和事务的关系关系型数据库某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务。事务的传播特性,,,,,,强制要求要有一个物理事务。外围事务不会被内部事务的回滚状态影响。不支持当前事务。 Spring和事务的关系 关系型数据库、某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务。 Spring很显然不是事务性资源,但是它可...

    graf 评论0 收藏0
  • Spring源码分析:声明式事务梳理

    摘要:使用注解方式简单模拟事务样例说明数据源采用采用持久化采用事务注解环境搭建依赖提供的模块链接驱动包配置类声明式事务配置类,其中一定要开启。 使用注解方式简单模拟事务 样例 说明 数据源采用c3p0 采用JdbcTemplate持久化 采用Spring事务注解 环境搭建 POM依赖 c3p0 c3p0 0.9.1.2 org.springfram...

    liaosilzu2007 评论0 收藏0
  • Spring事务管理

    摘要:事务的传播行为当事务方法被另一个事务方法调用时,必须指定事务应该如何传播。事务配置配置文件中关于事务配置总是由三个组成部分,分别是和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 数据库事务的隔离级别 数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializabl...

    TalkingData 评论0 收藏0
  • Spring事务传播行为详解

    摘要:前言在接口中规定了种类型的事务传播行为。事务传播行为是框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。本文对七种事务传播行为做详细介绍,内容主要代码示例的方式呈现。 前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供...

    cpupro 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<