当前位置: 首页 > news >正文

Spring中事务(面试常考)

点击查看什么是事务?

Spring 支持两种方式的事务管理

编程式事务管理
通过 TransactionTemplate或者TransactionManager手动管理事务,实际应用中很少使用,但是对于你理解 Spring 事务管理原理有帮助。
声明式事务管理
实际是通过 AOP 实现(基于@Transactional 的全注解方式使用最多)。

Spring 事务管理接口介绍

Spring 框架中,事务管理相关最重要的 3 个接口如下:

  • PlatformTransactionManager:(平台)事务管理器,Spring 事务策略的核心。
  • TransactionDefinition:事务定义信息(事务隔离级别、传播行为、超时、只读、回滚规则)。
  • TransactionStatus:事务运行状态。

@Transactional使用

可以在Spring 的 Bean 上使用@Transactional 注解

  1. 方法:推荐将注解使用于方法上,不过需要注意的是:该注解只能应用到 public 方法上,否则不生效。
  2. :如果这个注解使用在类上的话,表明该注解对该类中所有的 public 方法都生效。
  3. 接口:不推荐在接口上使用。

@Transactional 的常用配置参数

@Transactional 的常用配置参数总结:

属性名说明
propagation事务的传播行为,默认值为 REQUIRED
isolation事务的隔离级别,默认值采用 DEFAULT
timeout事务的超时时间,默认值为-1(不会超时)。如果超过该时间限制但事务还没有完成,则自动回滚事务。
readOnly指定事务是否为只读事务,默认值为 false。
rollbackFor用于指定能够触发事务回滚的异常类型,并且可以指定多个异常类型。

isolation的几种类型

    int ISOLATION_DEFAULT = -1;int ISOLATION_READ_UNCOMMITTED = 1;//读未提交int ISOLATION_READ_COMMITTED = 2;//读已提交int ISOLATION_REPEATABLE_READ = 4;//可重复读int ISOLATION_SERIALIZABLE = 8;//串行化

点击查看几种隔离类型的解释

propagation的几种类型
PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中
PROPAGATION_SUPPORTS:使用当前事务,如果当前没有事务,就以非事务方式执行
PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常mandatory
PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。


http://www.mrgr.cn/news/1316.html

相关文章:

  • STM32初识
  • 记一次Jenkins项目构建耗时优化
  • MT7621+MT7915(MT7905)+MT7975 (W7621A6G-SDK)编译固件与升级固件方法
  • 深入解析UDP协议与TCP协议:它们的区别与应用场景
  • XML外部实体注入
  • 大白话解析:深入浅出大模型RAG模块全解析
  • C++引用和指针的区别还分不清楚?
  • spring boot 接收第三方mq消息
  • VTK—vtkImplicitFunction 隐函数
  • uiapp+vue3具名插槽使用
  • 机器学习:knn算法实现图像识别
  • Transformer2
  • 【JavaEE】JVM 内存区域划分,以及 Java 垃圾回收机制引用计数器,可达性分析等
  • Java-分割list并执行多线程任务的工具类
  • 简洁清新个人博客网页模板演示学习
  • 解决springboot中Aspect注解不生效问题
  • 快速解析数据挖掘,最短时间明白什么是数据挖掘------下
  • 【网络】 arp 命令 得到网段内所有物理设备ip
  • 使用Docker-compose一键部署Wordpress平台
  • Springboot邮件发送:如何配置SMTP服务器?