SpringBoot中添加事务

今天项目中须要使用到事务,因此在这里将SpringBoot的事务实现方式学习一下java

SpringBoot中使用事务会使用到@Transactional这个注解来实现spring

  先来对Transactional注解有个大体了解数据库

  1.其上注解数组

@Target({ElementType.METHOD, ElementType.TYPE})//METHOD:用于描述方法,TYPE:用于描述类、接口(包括注解类型) 或enum声明 @Retention(RetentionPolicy.RUNTIME)//注解不只被保存到class文件中,jvm加载class文件以后,仍然存在 @Inherited//阐述了某个被标注的类型是被继承的 @Documented//代表这个注解应该被 javadoc工具记录

  2.属性 并发

    2.1 rollbackFor(这就是我今天使用到的属性)jvm

      指定哪些异常须要进行事务回滚,这里能够设置异常数组,一般为RuntimeException.class、Exception.class工具

    2.2 value和2.3 transactionManager(由于使用了AliasFor注解,value和transactionManager互为别名)学习

      这两个放在一块儿讲,若是咱们没有指定,默认为上下文中声明的名称为“transactionManager”,pringboot会自动配置一个 DataSourceTransactionManagerspa

    2.4 propagation 默认为Propagation.REQUIREDcode

      用于设置事务的传播行为,业务方法须要在一个事务中运行,若是方法运行时,已处在一个事务中,那么就加入该事务,不然本身建立一个新的事务.这是spring默认的传播行为

    2.5 isolation 默认为  Isolation.DEFAULT

      用于设置底层数据库的事务隔离级别,事务隔离级别用于处理多事务并发的状况,一般使用数据库的默认隔离级别便可,基本不须要进行设置

    2.6 timeout 默认为-1,表示永不超时

      用于设置事务的超时秒数

    2.7 readOnly 默认为false 

      设置当前事务是否为只读事务

    2.8 rollbackForClassName (这个和rollbackFor最大的区别就是一个是指定异常类,一个是指定异常类名)

    2.9 noRollbackFor(这个应该就是忽略哪些异常)

    2.10 noRollbackForClassName(这个我以为不须要我详细说明了)

  3.实际使用(这算是手动回滚使用)

    1.首先在咱们须要使用事务的Service层的方法上添加@Transactional注解

    2.rollbackFor配置咱们须要捕获的哪些异常来进行事务回滚

    3.其余参数按照本身实际需求来添加

    4.方法中捕获这个异常,而后调用

      TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

注意:

  1.@Transactional注解必须应用到public方法上才有效

相关文章
相关标签/搜索