zoukankan      html  css  js  c++  java
  • SpringBoot中添加事务

    今天项目中需要使用到事务,所以在这里将SpringBoot的事务实现方式学习一下

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

      先来对Transactional注解有个大致了解

      1.其上注解

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

      2.属性 

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

          指定哪些异常需要进行事务回滚,这里可以设置异常数组,通常为RuntimeException.class、Exception.class

        2.2 value和2.3 transactionManager(因为使用了AliasFor注解,value和transactionManager互为别名)

          这两个放在一起讲,如果我们没有指定,默认为上下文中声明的名称为“transactionManager”,pringboot会自动配置一个 DataSourceTransactionManager

        2.4 propagation 默认为Propagation.REQUIRED

          用于设置事务的传播行为,业务方法需要在一个事务中运行,如果方法运行时,已处在一个事务中,那么就加入该事务,否则自己创建一个新的事务.这是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方法上才有效

  • 相关阅读:
    Windows Phone 开发 MD5计算
    php 3des加密算法以及与java,.net,c#的交互的一致性
    <加密算法c#>——— 3DES加密之ECB模式 和 CBC模式
    Blend PathListBox 使用
    计算机的几种类型单词、快捷键
    【SQL Server】 数据定义语言(定义基本表、完整性约束实现、索引)
    【SQL Server】 数据查询语句
    【WindowsPhone】 独立存储
    终结,铭记
    Day 3,4,5
  • 原文地址:https://www.cnblogs.com/kongkongFabian/p/9610938.html
Copyright © 2011-2022 走看看