简介:Spring事务管理和数据库的事务管理的功能作用上是一样的,在学习数据库时,为了数据完整性,采用了事务管理,即开启事务、提交事务和管理事务。在SpringBoot框架中添加一个注解 @Transactional 就可以将当前方法、类和接口设置为一个注解。
1.1 基础知识
注解:@Transactional
位置:业务(Service)层的方法上、类上、接口上
作用:将当前方法、类、接口交给Spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务
1.2 开启事务管理日志
将下图代码添加到yml的配置文件中
#spring事务管理日志 logging: level: org.springframework.jdbc.support.JdbcTransactionManager: debug
2.1 事务属性
? ? ? ? 1. rollbackFor
? ? ? ? 默认情况下,只有出现 RuntimeException 才会回滚异常。rollbackFor属性用于控制出现何种异常类型,回滚事务。
package com.itheima.tliaswebmanagement.exception; import com.itheima.tliaswebmanagement.pojo.Result; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @RestControllerAdvice // 异常类注解 @Transactional(rollbackFor = Exception.class) //所有异常,都要回滚 public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) // 定义处理什么种类的注解 public Result ex(Exception exception){ // 异常打印出来 exception.printStackTrace(); return Result.error("出现异常,请联系管理员"); } }
? ? ? ? 2. propagation(传播)
? ? ? ? 事务传播行为:指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制
? ? ? ? REQUIRED:大部分情况下都是用该传播行为即可。
? ? ? ? REQUIRES_NEW:当我们不希望事物之间相互影响时,可以使用该传播行为。