关闭

Spring Boot事务配置

标签: SpringBoot事务并发
7116人阅读 评论(1) 收藏 举报
分类:

1、在启动主类添加注解:@EnableTransactionManagement 来启用注解式事务管理,相当于之前在xml中配置的<tx:annotation-driven />注解驱动。

2、在需要事务的类或者方法上面添加@Transactional() 注解,里面可以配置需要的粒度:这里写图片描述

这么多东西提供配置:

Isolation :隔离级别

隔离级别是指若干个并发的事务之间的隔离程度,与我们开发时候主要相关的场景包括:脏读取、重复读、幻读。

我们可以看 org.springframework.transaction.annotation.Isolation 枚举类中定义了五个表示隔离级别的值:

public enum Isolation {  
    DEFAULT(-1),
    READ_UNCOMMITTED(1),
    READ_COMMITTED(2),
    REPEATABLE_READ(4),
    SERIALIZABLE(8);
}

DEFAULT :这是默认值,表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是: READ_COMMITTED
READ_UNCOMMITTED :该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读,因此很少使用该隔离级别。
READ_COMMITTED :该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。
REPEATABLE_READ :该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读。
SERIALIZABLE :所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
指定方法:通过使用 isolation 属性设置,例如:@Transactional(isolation = Isolation.DEFAULT)

Propagation:传播行为

所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。

我们可以看 org.springframework.transaction.annotation.Propagation 枚举类中定义了6个表示传播行为的枚举值:

public enum Propagation {  
    REQUIRED(0),
    SUPPORTS(1),
    MANDATORY(2),
    REQUIRES_NEW(3),
    NOT_SUPPORTED(4),
    NEVER(5),
    NESTED(6);
}

REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
SUPPORTS :如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
MANDATORY :如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
REQUIRES_NEW :创建一个新的事务,如果当前存在事务,则把当前事务挂起。
NOT_SUPPORTED :以非事务方式运行,如果当前存在事务,则把当前事务挂起。
NEVER :以非事务方式运行,如果当前存在事务,则抛出异常。
NESTED :如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 REQUIRED
指定方法:通过使用 propagation 属性设置,例如:@Transactional(propagation = Propagation.REQUIRED)

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Spring Boot事务配置

1、在启动主类添加注解:@EnableTransactionManagement 来启用注解式事务管理,相当于之前在xml中配置的注解驱动。2、在需要事务的类或者方法上面添加@Transactiona...
  • rickiyeat
  • rickiyeat
  • 2017-03-14 14:31
  • 7116

spring 事务-使用@Transactional 注解(事务隔离级别)

先看下@Transactional可以配制那些参数及以其所代表的意义。 isolation 枚举org.springframework.transaction.annotatio...
  • a317677438a
  • a317677438a
  • 2016-08-11 21:49
  • 6102

Spring事务配置及事务的传播性与隔离级别详解

Spring事务配置 通过注解配置 1.在Spring配置文件引入 <beans xmlns="http://www.springframework.org/schema/beans" xmlns...
  • v123411739
  • v123411739
  • 2016-03-10 15:37
  • 2908

Spring Boot事务配置

1、在启动主类添加注解:@EnableTransactionManagement 来启用注解式事务管理,相当于之前在xml中配置的注解驱动。 2、在需要事务的类或者方法上面添加@Transactio...
  • SoumnsJ
  • SoumnsJ
  • 2017-11-14 17:53
  • 41

spring boot配置mybatis和事务管理

Spring Boot配置Mybatis一、spring boot与mybatis的配置1.首先,spring boot 配置mybatis需要的全部依赖如下: org.springframewor...
  • wohaqiyi
  • wohaqiyi
  • 2017-06-07 08:37
  • 21371

Spring Boot 中使用 @Transactional 注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP...
  • nextyu
  • nextyu
  • 2017-11-29 21:15
  • 256

基于spring boot项目的多数据源配置与分布式事务处理总结

多数据源配置 项目存在10个数据源,如下 core_biz 业务逻辑 数据库core_sys 系统设置 数据库fund_pool 资金池 数据库 分用户拆分了8个库 针对这10个数据...
  • he90227
  • he90227
  • 2016-09-10 10:53
  • 7663

Spring boot+Atomikos+JTA+Hibernate+MySQL实现分布式事务+多数据源(可运行)

  • 2017-09-12 09:21
  • 80KB
  • 下载

Spring Boot+Druid+Mybatis实现JTA分布式事务

  • 2017-08-27 03:12
  • 379KB
  • 下载

Spring Boot 事务的使用

spring Boot 使用事务非常简单,首先使用注解 @EnableTransactionManagement 开启事务支持后,然后在访问数据库的Service方法上添加注解 @Transactio...
  • zmken497300
  • zmken497300
  • 2017-01-07 09:43
  • 1019
    个人资料
    • 访问:667016次
    • 积分:6847
    • 等级:
    • 排名:第3945名
    • 原创:106篇
    • 转载:37篇
    • 译文:11篇
    • 评论:207条
    博客专栏
    个人联系方式
    更多交流
    最新评论