Spring事务失效的常见场景学生来看

 我来答
阿阳畅心声
情感倾听者

2023-06-20 · 专注挽回感情
知道大有可为答主
回答量:9428
采纳率:98%
帮助的人:130万
展开全部

JavaSpring 八种常见失效场景

1.事务方法未被Spring管理

如果事务方法所在的类没有注册到Spring IOC容器中,也就是说,事务方法所在类并没有被Spring管理,则Spring事务会失效

2.方法使用final类型修饰

有时候,某个方法不想被子类重新,这时可以将该方法定义成final的。普通方法这样定义是没问题的,但如果将事务方法定义成final,例如:

3.非public修饰的方法

如果事务方式不是public修饰,此时Spring事务会失效,举个例子

4.同一个类中的方法相互调用

5,方法的事务传播类型不支持事务

如果内部方法的事务传播类型为不支持事务的传播类型,则内部方法的事务同样会在Spring中失效,举个例子

6.未配置开启事务

如果项目中没有配置Spring的事务管理器,即使使用了Spring的事务管理功能,Spring的事务也不会生效,例如,如果你是Spring Boot项目,没有在SpringBoot项目中配置如下代码

7.错误的传播特性

其实,我们在使用@Transactional注解时,是可以指定propagation参数的。该参数的作用是指定事务的传播特性,目前Spring支持4种传播特性:

REQUIRED如果当前上下文中存在事务,那么加入该事务,如果不存在事务,创建一个事务,这是默认的传播属性值。

SUPPORTS如果当前上下;文存在事务,则支持事务加入事务,如果不存在事务,则使用非事务的方式执行。

MANDATORY如果当前上下文中存在事务,否则抛出异常。

REQUIRES_NEW每次都会新建一个事务,并且同时将上下文中的事务挂起,执行当前新建事务完成以后,上下文事务恢复再执行。

8,多线程调用

在实际项目开发中,多线程的使用场景还是挺多的。如果Spring事务用在多线程场景中使用不当,也会导致事务无法生效。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式