`
hougbin
  • 浏览: 502533 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

spring注解事务传播行为

    博客分类:
  • ssh
 
阅读更多
service类前加上@Transactional,声明这个service所有方法需要事务管理。每一个业务方法开始时都会打开一个事务。
Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚。这个例外是unchecked
如果遇到checked意外就不回滚。
如何改变默认规则:
1 checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
2 unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
3 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)
                                                        在整个方法运行前就不会开启事务
       还可以加上:@Transactional(propagation=Propagation.NOT_SUPPORTED,readOnly=true),这样就做成一个只读事务,可以提高效率。
       各种属性的意义:
       REQUIRED:业务方法需要在一个容器里运行。如果方法运行时,已经处在一个事务中,那么加入到这个事务,否则自己新建一个新的事务。
       NOT_SUPPORTED:声明方法不需要事务。如果方法没有关联到一个事务,容器不会为他开启事务,如果方法在一个事务中被调用,该事务会被挂起,调用结束后,原先的事务会恢复执行。
       REQUIRESNEW:不管是否存在事务,该方法总汇为自己发起一个新的事务。如果方法已经运行在一个事务中,则原有事务挂起,新的事务被创建。
       MANDATORY该方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果在没有事务的环境下被调用,容器抛出例外。
       SUPPORTS:该方法在某个事务范围内被调用,则方法成为该事务的一部分。如果方法在该事务范围外被调用,该方法就在没有事务的环境下执行。
       NEVER该方法绝对不能在事务范围内执行。如果在就抛例外。只有该方法没有关联到任何事务,才正常执行。
       NESTED:如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效
分享到:
评论

相关推荐

    spring 事务传播 demo

    本示例“spring 事务传播 demo”将聚焦于Spring的事务传播行为,这是在多个方法调用中控制事务边界的关键概念。下面我们将详细讨论相关知识点。 首先,事务传播行为是指当一个被@Transactional注解的方法被另一个@...

    Spring事务传播机制.docx

    Spring 事务传播机制 Spring 事务传播机制是指在 Spring 框架中,事务的传播和嵌套机制。当我们在使用 Spring 所提供的事务功能时,如果是仅仅处理单个的事务,是比较容易把握事务的提交与回滚,不过一旦引入嵌套...

    spring注解事务实现demo

    注解中可以包含多个属性,如`value`(指定事务管理器)、`propagation`(事务传播行为)、`isolation`(事务隔离级别)、`readOnly`(是否只读事务)等,以定制事务的行为。 3. **事务传播行为** 事务传播行为定义...

    spring 注解事务管理

    - `propagation`: 事务传播行为,例如`Propagation.REQUIRED`(默认值)表示如果当前没有事务,则新建一个;`Propagation.SUPPORTS`表示如果存在事务则加入,否则不开启事务。 - `isolation`: 事务隔离级别,例如`...

    Spring事务传播Demo.zip

    Spring定义了七种事务传播行为: 1. **PROPAGATION_REQUIRED**:这是默认的传播行为,如果当前存在事务,则加入该事务;如果不存在,则新建一个事务。 2. **PROPAGATION_SUPPORTS**:如果当前存在事务,就支持该...

    spring 事务基于注解模式

    #### 2.2 事务传播行为 - REQUIRED:默认行为,如果当前存在事务,则加入该事务;若无,则创建一个新的事务。 - SUPPORTS:如果存在事务,则支持当前事务;若无,事务也可以运行。 - MANDATORY:如果存在事务,则...

    spring 事务传播与隔离级别DEMO

    Spring通过`@Transactional`注解可以方便地设置事务传播行为和隔离级别,例如: ```java @Transactional(isolation = Isolation.READ_COMMITTED, propagation = Propagation.REQUIRED) public void ...

    浅谈Spring事务传播行为实战

    浅谈Spring事务传播行为实战 Spring框架提供了事务管理的标准实现,通过注解或者XML文件的方式声明和配置事务。事务管理是指按照给定的事务规则来执行事务的提交或者回滚操作。事务的机制实现很大一部依赖事务日志...

    通过实际案例摸清楚Spring事务传播的行为.docx

    Spring 事务传播行为是Spring框架中事务管理的重要组成部分,它定义了在多个方法相互调用时,事务如何在这些方法间传播。理解这些行为对于确保应用程序的事务一致性至关重要。接下来,我们将通过具体的案例来深入...

    Spring事务传播属性

    Spring定义了七种事务传播行为: 1. **PROPAGATION_REQUIRED**:这是默认值,表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是大多数业务操作的首选设置。 2. **PROPAGATION_...

    Spring事务流程图

    5. **事务传播行为**:Spring提供了七种事务传播行为,如REQUIRED(默认)、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED,它们决定了事务如何在方法调用之间传播。 时序图是一种UML建模工具...

    Spring事务管理Demo

    在Spring中,事务的传播行为有七种: - `REQUIRED`:默认行为,如果当前没有事务,则新建一个;如果已经存在事务,则加入到当前事务。 - `SUPPORTS`:如果当前存在事务,则支持事务;如果没有事务,则不开启。 - `...

    spring声明事务的配置

    事务属性(`transactionAttributes`)用于定义不同方法的事务传播行为,如`PROPAGATION_REQUIRED`、`PROPAGATION_MANDATORY`等。这种方法的缺点是配置繁琐,需要为每个业务类单独配置。 2. **通过基类配置事务** ...

    spring学习事务源码

    此外,Spring的事务传播行为(PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等)是另一个重要概念,它定义了在一个事务中的方法如何启动新的事务或者加入到当前事务中。例如,PROPAGATION_REQUIRED表示如果当前...

    Spring事务传播原理及数据库事务操作原理.rar

    Spring定义了七种事务传播行为:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER和PROPAGATION_NESTED。每种行为都...

    spring注解式事务

    "spring注解式事务" Spring框架提供了基于注解的方式来管理事务,使用@Transactional注解来标记需要事务管理的方法。该注解可以被应用于public方法上,对于非public方法,如果标记了@Transactional也不会报错,但...

    spring事务与数据库操作

    这段代码配置了一个事务管理器,并定义了一个事务顾问(`tx:advice`),该顾问指定了不同方法名前缀对应的不同事务传播行为。例如,所有以`save`开头的方法都将使用`REQUIRED`传播行为,这意味着如果当前存在事务,...

    Spring事务传播行为问题解决

    Spring事务传播行为问题解决 Spring事务传播行为问题解决是指在Spring框架中,事务传播行为的配置和使用问题。事务传播行为是指在多个事务方法之间的调用关系,如何去管理和控制事务的传播和回滚。 一、 Spring...

    这一次搞懂Spring事务是如何传播的

    Spring支持七种不同的事务传播行为,它们分别是: 1. **PROPAGATION_REQUIRED**:这是默认的传播行为,如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常见的选择。 2. **...

Global site tag (gtag.js) - Google Analytics