大家好,今天小编来为大家解答以下的问题,关于spring事务不生效的几种情况,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注解标记不建议使用的介绍到此结束,希望对大家有所帮助。