【重难点】【事务 02】Spring 事务

【重难点】【事务 02】Spring 事务

一、注解 @Transactional 的原理

Spring 本质上是对数据库事务的进一步封装,如果数据库不支持事务,那么 Spring 也无法实现事务

Spring 事务是一种声明式的事务,可以简化编程开发,只需要在启动类上添加注解驱动并配置事务管理器,然后在相关的类或者方法上添加 @Transactional 注解就可以开启并使用 Spring 事务

Spring 框架在启动时会创建 Bean 的实例对象,并且会扫描注解,如果扫描到 @Transactional 注解的类或者方法时,会根据注解的参数进行配置注入,生成指定的代理对象实现事务功能

@Transactional 有哪些参数

  • 事务传播机制
  • 事务隔离级别
  • 超时时间:事务一定的时间内未提交会自动回滚
  • 是否只读
  • 异常回滚(默认为 RuntimeException)
  • 异常不回滚

二、事务隔离级别

Spring 事务有五种隔离级别,分别为默认、读未提交、读已提交、可重复读和串行化

默认就是使用数据库默认的事务隔离级别,如果 Spring 事务的隔离级别与数据库的隔离级别不一致则以 Spring 事务的为准

三、事务传播机制

Spring 事务传播机制定义了 7 种类型:

REQUIRED
如果当前没有事务,就创建一个事务,如果已经存在一个事务,就加入这个事务。如果调用端发生异常,则调用端和被调用端的事务都将回滚

REQUIRED_NEW
如果当前存在事务,就将当前事务挂起,并重新创建新的事务并执行,直到新的事务提交或者回滚,才会恢复执行原来的事务

SUPPORTS
如果当前存在事务,就加入这个事务,如果当前没有事务,就以非事务的方式执行

MANDATORY
如果当前存在事务,就加入这个事务,如果当前没有事务,则会抛出异常

NOT_SUPPORTED
如果当前存在事务,就将当前事务挂起,以非事务的方式执行,如果当前没有事务,也将以非事务的方式执行

NEVER
如果当前存在事务,则抛出异常

NESTED
如果当前存在事务,则这个方法应该运行在一个嵌套事务中。外层事务回滚,内层事务也要回滚;内层事务回滚,不影响外层事务的提交

四、事务失效场景

  • 数据库不支持事务
  • 事务方法所在类未加载到 IOC 容器
  • 事务方法没有被 public 修饰
  • 调用方法和被调用方法在同一个类中,那么调用时就不会调用代理方法
  • 未配置事务管理器
  • 事务传播类型不支持事务
  • 使用了 try-catch 导致回滚失效
  • 标注了错误的异常不回滚类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring框架中,有几个要且常被认为是难点的概念和技术: 1. 控制反转(Inversion of Control,IoC):Spring框架的核心概念之一。IoC将对象的创建和依赖注入的责任从应用程序代码转移到了框架中,通过配置文件或注解来描述对象之间的依赖关系。理解和正确使用IoC容器是使用Spring的关键。 2. 依赖注入(Dependency Injection,DI):DI是实现IoC的一种方式,它通过将对象的依赖关系通过构造函数、属性或方法参数的方式注入到对象中,而不是在对象内部创建或查找依赖。掌握依赖注入的概念、使用方式和注入时机是使用Spring框架的要技能。 3. 切面编程(Aspect-Oriented Programming,AOP):AOP是一种编程范式,通过将通用的横切关注点(例如日志记录、事务管理)从主业务逻辑中分离出来,以增强代码的模块性和可维护性。Spring框架提供了AOP的支持,掌握AOP的概念、切点表达式和通知类型是使用Spring框架的要技术。 4. 数据访问与集成(Data Access and Integration):Spring框架提供了对数据访问和集成的支持,包括JDBC、ORM(如Hibernate、MyBatis)、事务管理等。了解Spring框架在数据访问与集成方面的特性、配置和最佳实践是开发应用程序的关键。 5. Spring MVC:Spring框架提供了一个基于MVC(Model-View-Controller)架构的Web框架,用于构建Web应用程序。理解Spring MVC的工作原理、控制器、视图解析器、请求处理流程等是开发Web应用程序的点。 6. 测试与调试:Spring框架提供了丰富的测试支持和调试工具,包括单元测试、集成测试、模拟对象等。了解如何编写有效的测试用例和使用调试工具是保证应用程序质量的要手段。 这些是使用Spring框架时需要理解和掌握的难点。通过学习和实践,逐渐熟悉这些概念和技术,能够更好地使用和应用Spring框架来开发高效、可维护的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

313YPHU3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值