Spring事务

16 阅读1分钟
  • 位置:业务(service)层的方法上、类上、接口上
  • 作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务
  • 注解:@Transactional,有两个属性
    • rollbaackFor属性:用于控制出现何种异常类型时回滚事务。默认情况下,只有出现RuntimeException才会回滚异常。
    • propagation:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。
属性值核心逻辑(是否需要事务)已有事务时的行为无事务时的行为典型场景
REQUIRED需要(默认)加入已有事务新建事务普通业务方法
REQUIRES_NEW需要(独立)挂起原有事务,新建事务新建事务独立日志、异步操作
SUPPORTS可选加入已有事务非事务执行非核心查询方法
NOT_SUPPORTED不需要挂起原有事务,非事务执行非事务执行无状态的只读操作
MANDATORY必须有加入已有事务抛异常强依赖上层事务的方法
NEVER必须无抛异常非事务执行严格禁止事务的操作

常用REQUIREDREQUIRES_NEW


配置事务日志:

#开启事务管理日志
logging:
    level:
        org.springframework.jdbc.support.JdbcTransaction Managger: debug