Skip to content

Spring事务管理

  1. 注解:@Transactional

  2. 位置:业务(Service)层的方法上、类上、接口上

  3. 作用:将当前方法交给spring进行事务管理,方法执行前,开启事务,成功执行完毕后提交事务,出现异常,回滚事务

  4. 事务进阶:

  • rollbackFor:默认情况下,只有出现RuntimeException才回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务

  • propagation:决定了当有嵌套事务操作时,这多个事务是否归属于同一事务,规定了事务传播的方式

    • 常用属性:

       * Propagation.REQUIRES_NEW 指明当前事务被其他事务调用时会再创建一个事务
       * Propagation.REQUIRED 默认属性 指明当前事务被其他事务调用时会加入原事务
      
  • 举例,当A事务执行期间调用了B事务,B事务可以选择是否和A事务同属于一个事务,如果B事务和A事务同属于一个事务,那么在A事务执行期间发生错误回滚时,B事务的操作也会被回滚。如果B事务选择被调用时创建一个新的事务,那么B事务被调用时,就会先完成B事务本身的操作,提交后,系统才会继续执行A事务,这样B事务所做的操作就被保存了

  • 比如日志操作的事务,该事务不管其他事务是否回滚,都需要保存操作日志