Spring事务失效的原因

Spring的事务传播行为

  • required
  • required_new
  • supports
  • not_supported
  • mandatory
  • never
  • nested

Spring事务失效的原因

1. 同一类中方法调用

如果同一个类中的两个方法分别为A和B,方法A上没有添加事务注解,方法B上添加了 @Transactional事务注解,方法A调用方法B,那么,方法B的事务会失效。

2. propagation事务传播行为配置错误

如果内部方法的事务传播类型为不支持事务的传播类型,那么,内部方法的事务在Spring中会失效。

  • Propagation.SUPPORTS
  • Propagation.NOT_SUPPORTED
  • Propagation.NEVER

3. 没有配置事务管理器

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

4. 数据库本身不支持事务

Spring事务生效的前提是所连接的数据库要支持事务,如果底层的数据库都不支持事务,那么,Spring的事务肯定会失效。例如,如果使用的数据库为MySQL,并且选用了MyISAM存储引擎,则Spring的事务就会失效。

你可能感兴趣的:(spring,java,后端)