java 配置事务回滚_Spring@Transactional事务回滚

Spring中事务分为编程时事务和声明式事务,编程式事务:编程人员通过代码控制事务的开启、回滚、提交,声明式事务:把事务的处理交给spring。使用注解@transactional配置就是声明式事务。

基本配置

在applicationContext.xml配置文件中

1 //配置spring的DataSourceTransactionManager事务管理器

2

3 class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

4 //指向的数据源

5

6 //配置事务注解驱动

7

然后在需要事务管理的地方加@Transactional 注解。

实现事务回滚需要注意的问题:

1.@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。

2.@Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错,但是这个被注解的方法将不会展示已配置的事务设置。

3.默认情况下,spring会对unchecked异常进行事务回滚;如果是checked异常则不回滚。

如果事务在try{}catch(Exception e){e.printStackTrace();}中跑,并且catch中只是打印e的话,那么事务不会rollback。因为异常被catch掉了,框架不知道发生了常。

如果想要rollback,

(1)注解上面写明异常类型即可,@Transactional(rollbackFor=Exception.class)

(2)在方法上添加 throws Exception,将方法中出现的异常抛出给spring事务

(3)去掉方法体中的try catch

(4)catch (Exception e) { throw e;}继续向上抛,目的是让spring事务捕获这个异常

除了以上注意的问题,说一下最近遇到的关于多数据源配置事务回滚的问题

在项目中关于事务该配置的也配置了,需要注意的问题也注意了,但有的事务可以出现回滚有的回滚失败,最终问题所在: id相同的事务配置分别配置在两个application.xml文件中,如果多个application.xml有配置,在web.xml中后加载的application.xml中的事务配置会覆盖最先加的application.xml中的事务配置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值