所谓事务传播特性就是多个事务方法相互调用时,事务如何在这些方法间传播。Spring支持7中事务传播行为
1.PROPAGATION_REQUIRED(默认实现):当前没有事务则新建事务,有则加入当前事务
2.PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务则以非事务方式执行
3PROPAGATION_MANDATORY:使用当前事务,如果没有则抛出异常
4PROPAGATION__REQUIRES_NEW:新建事务,如果当前有事务则把当前事务挂起
5PROPAGATION_NOT_SUPPORIED:以非事务的方式执行,如果当前有事务则把当前事务挂起
6PROPAGATION_NEVER:以非事务的方式执行,如果当前有事务则抛出异常
7PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行,如果当前没有事务,则执行1
为什么Spring可以让事务进行传播呢:看了源码我们就明白了
-----由于Spring的事务管理是通过线程相关的ThreadLocal来保存数据访问基础设施的(Connection对象),再结合IoC和AOP实现高级声明式事务的功能,所以Spring的事务天然的和线程有着千丝万缕的关系。
Spring通过ThreadLocal可以将大部分Bean无状态化(线程安全的)所以Spring中单实例Bean对线程安全问题拥有一种天然的免疫力。
所以Spring中DAO和Service都以单实例的方式存在,Spring将有状态的变量(Connection)本地线程化,达到另一个层面上的线程无关,从而实现线程无关。
总结:在相同的线程中进行相互嵌套调用的事务方法工作于相同的事务中,不同的线程中,则各自独立工作与独立的事务中。
相关推荐
通过代码解析spring传播特性,包括 1、Propagation.REQUIRED 方法被调用时自动开启事务,在事务范围内使用则使用同一个事务,否则开启新事务。 2、Propagation.REQUIRES_NEW 无论何时自身都会开启事务 3、...
Spring事务的传播特性和隔离级别 事务的几种传播特性详细介绍
spring事务的传播特性和事务隔离级别
事务传播特性&事务隔离级别 详细的事务传播特性&事务隔离级别
spring事务的传播特性.pptx
Spring 管理事务(传播特性、隔离级别、readonly).rar
Java面试题54.Spring事务的传播特性和隔离级别.mp4
Spring控制Hibernate中的事务传播特性与隔离级别操作,通过利用spring和Hibernate的两个HibernateTemplate 和 jdbcTemplate类,实现数据的交互。
java面试宝典
1.事务四大特性和底层实现原理 2.数据库表加锁机制 3.并发事务带来的问题和解决方案(包含四种隔离级别和会产生的锁) 4.逐个分析脏读,不可重复读和幻读出现的场景和解决方案 5.事务的底层原理(附带流程图) 6....
spring支持7种事务传播行为,确定客户端和被调用端的事务边界(说得通俗一点就是多个具有事务控制的service的相互调用时所形成的复杂的事务边界控制),这篇文章主要给大家介绍了关于Spring事务传播行为的相关资料,...
此外,Spring事务管理器支持多种类型的事务策略,包括不同的传播行为和隔离级别,允许开发者根据具体业务场景选择最合适的事务管理策略。深入理解Spring声明式事务的工作原理,不仅能帮助开发者更高效地使用Spring...
NULL 博文链接:https://zhouchaofei2010.iteye.com/blog/2397918
传播特性有几种?7种; 某一个事务嵌套另一个事务的时候怎么办? REQUIRED_NEW和REQUIRED区别 Spring的事务是如何回滚的,实现原理; 抽象类和接口的区别,什么时候用抽象类什么时候用接口; StringBuilder和...
* 配置事务的传播特性 * 配置哪些类哪些方法使用事务 2.编写业务逻辑方法 * 继承HibernateDaoSupport类,使用this.HibernateTemplate这个类持久化数据 * HibernateTemplate是对session的轻量级的封装 * 默认...
上面我们只是简单的使用事务,这里将讨论Spring事务机制中最重要的两个配置项,即隔离级别与传播行为。毫无疑问本节内容是本章的核心内容,也是互联网企业最关注的内容之一,因此他十分重要,值得花费大的篇幅去讨论...
5.1.8.2Spring事务的传播属性 117 5.1.8.3Spring事务的隔离级别 117 拓展: 118 5.1.8.4以XML配置的 形式 119 拓展: 120 5.1.8.5以注解方式配置 125 拓展: 127 5.1.9使用CGLIB以XML形式配置事务 130 5.2 Spring+...
事务本⾝并不存在什么传播特性,不要混淆事务本⾝和Spring的事务应⽤策略。(当然,找⼯作⾯试时,还是可以巧妙的描述传播 特性的) 2.⼀说到事务,⼈们可能⼜会想起create、begin、commit、rollback、close、...
主要介绍了spring事务Propagation及其实现原理详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
9.5.7. 事务传播 9.5.8. 通知事务操作 9.5.9. 结合AspectJ使用 @Transactional 9.6. 编程式事务管理 9.6.1. 使用TransactionTemplate 9.6.2. 使用PlatformTransactionManager 9.7. 选择编程式事务管理还是声明...