spring事务不生效的几种情况

佚名 不建议 2023-08-21 15:29:51 -
在spring中事务不生效的场景总结

大家好,今天小编来为大家解答以下的问题,关于spring事务不生效的几种情况,spring注解标记不建议使用这个很多人还不知道,现在让我们一起来看看吧!

本文目录

  1. spring的事务注解作用于哪一层
  2. springboot 注解与程序的区别
  3. 注解service和component的区别
  4. spring事务不生效的几种情况

spring的事务注解作用于哪一层

作用在c等,既控制层。

springboot 注解与程序的区别

springboot注解是注册解释,程序是有程序的

注解service和component的区别

可以点进@service注解看一下,@service引用了@component注解,也就是component注解实现的功能@service都能实现,而@service是对@component进一步拓展,被@service注解标注的类会被spring认定是业务逻辑层,里面有spring对业务逻辑层管理的一对逻辑。

spring事务不生效的几种情况

1.数据库引擎不支持事务

在MySQL数据库中有几种引擎(InnoDB,MyISAM,Memory等等),仅仅InnoDB支持事务,如果数据库底层都不支持事务的话,那么再怎么折腾都是白搭.mysql的myisam引擎不支持事务操作,innodb才支持事务。从mysql5.5.5开始的默认存储引擎是innodb之前默认都是myisam

2.没有被spring管理

因为事务使用的是代理类织入。如@Service注解被注解掉,则该bean不会被spring管理

3.方法不是public的,@transactional加在private方法上

@Transactional只能加在public方法上,如果需要在private方法中加入事务,可以使用Aspect配transactionManager使用.

4.自调用问题-本类方法调本类另一个方法

调用该类自己的方法,而没有经过spring的代理类,默认只有在外部调用事务才会生效。解决方案之一是在类中注入自己,用注入的对象再调用另外一个方法。

关于spring事务不生效的几种情况,spring注解标记不建议使用的介绍到此结束,希望对大家有所帮助。

Spring事务的7种传播行为