当前位置:首页 > Java技术 > springboot 事务注解 @Transactional 不生效

springboot 事务注解 @Transactional 不生效

2022年09月16日 22:14:09Java技术6

文章目录


  • 在业务层手工捕捉并处理了异常(try…catch)等于把异常“吃”掉了;这是最常见的情况,在boot未流行时就经常遇到这个问题,手动 捕获异常 Spring自然不知道这里有错,更不会主动去回滚数据。推荐做法是在业务层统一抛出异常,然后在控制层统一处理。

  • Spring的默认的事务规则是遇到运行异常(RuntimeException)和程序错误(Error)才会回滚,而异常是继承自 Exception 也会导致失效。如果想针对非检测异常进行事务回滚,可以在@Transactional 注解里使用rollbackFor 属性明确指定异常。

    • 使用 rollbackFor 后依然无效:检查是否在类和 方法上都加了 @Transactional 和 rollbackFor ,方法上的 @Transactional 会使得 类上的无效,去掉方法上的 @Transactional 注解;
    • 在接口上使用 @Transactional ,这种方式,在设置了基于接口的代理时它才生效,基于类的代理不生效,因为注解是 不能继承 的;而spring 基于类和基于接口的代理是混用的,所有有时候就会不生效
  • @Transactional 注解应该只被应用到 public 修饰的方法上。 如果你在 protected、private 、 default 的方法上使用 @Transactional 注解,它也不会报错, 但是这个被注解的方法将不会展示已配置的事务设置。

    • 引申的另一个问题: 在 protected、private 、 default 修饰的方法使用 @Controller 注解也会导致调用接口时 404,然后会找老半天,才会发现是修饰符的问题。

作者:AntHub
来源链接:https://blog.csdn.net/wwq921220/article/details/109721668

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/42163.html

分享给朋友:

“springboot 事务注解 @Transactional 不生效” 的相关文章

SpringBoot事务简单操作及手动回滚

本节部分内容摘自:https://blog.csdn.net/zzhongcy/article/details/102893309 一、引入依赖 <!-- 核心启动器, 包括auto-configuration、logging and YAML -->...

springboot注解

@RestController和@RequestMapping注解 我们的Example类上使用的第一个注解是 @RestController 。这被称为一个构造型(stereotype)注解。它为阅读代码的人们提供建议。对于Spring,该类扮演了一个特殊角色。在本示例中,我们...

SpringBoot注解大全

SpringBoot注解大全

springboot annotations 一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@Co...

spring boot配置事务(事务回滚)

spring boot配置事务(事务回滚)

在业务层(service)中难免存在要先后操作多张表的业务逻辑,如前端完成一个操作,后台需要对数据库三张表进行操作,如若任意一个操作事务,这几个操作都应该不允许被实现,即回到操作前,解决方法是开启事务,让其在出错时实现事务回滚作用。 如:有以下三个...

SpringBoot2.x学习-事务管理

一、事务介绍 1、数据库事务:是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。这些操作要么全部执行成功提交(commit),要么全部中止失败(abort,rollback)。就是在数据库执行多条SQL语句,要么都执行成功,...

SpringBoot 常用注解汇总

目录 Spring Boot 常用注解汇总 一、启动注解 @SpringBootApplication @SpringBootConfiguration 注解,继承@Configuration注解,主要用于加载配置文件 @Enab...

SpringBoot中添加事务

今天项目中需要使用到事务,所以在这里将SpringBoot的事务实现方式学习一下 SpringBoot中使用事务会使用到@Transactional这个注解来实现   先来对Transactional注解有个大致了解   1.其上注解...

springboot 事务统一配置

什么是事务? 我们在开发企业应用时,对于业务人员的一个操作实际是对数据读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成,之前成功操作数据的并不可靠,需要在这种情况下进行...

springboot MongoDB 事务

前言 有玩过mongodb的朋友大概会知道mongodb4.0版本已经可以支持多文档副本集事务。而最新版本4.2更是支持分片事务,即真正的支持分布式事务。不过当时我使用mongodb,其最新版本为4.10,4.2版本还没发布,因此本文还是以4.0版本的副本集事务来讲解。...

SpringBoot配置AOP与事务控制

SpringBoot配置AOP与事务控制

SpringBoot配置AOP与事务控制 前言 AOP:面向切面编程,可以在不影响源代码的情况下对方法进行动态增强 事务:日常开发中经常碰到的一个问题,假如程序出现了异常,可能会导致提交到数据库不一致的情况发生。所以需要事务来解决,事务...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。