Spring事务失效的场景有哪些?如何解决?

发布时间 2023-03-25 21:49:18作者: 百里浅暮

实际项目开发中,如果涉及到多张表操作时,为了保证业务数据的一致性,大家一般都会采用事务机制。此篇文章给大家整理了一下常见Spring事务失效的场景。

常见的失效场景:

  • 注解@Transactional配置的方法非public权限修饰;
  • 注解@Transactional所在类非Spring容器管理的bean;
  • 注解@Transactional所在类中,注解修饰的方法被类内部方法调用;
  • 业务代码抛出异常类型非RuntimeException,事务失效;
  • 业务代码中存在异常时,使用try…catch…语句块捕获,而catch语句块没有throw new RuntimeExecption异常;(最难被排查到问题且容易忽略)
  • 注解@Transactional中Propagation属性值设置错误即Propagation.NOT_SUPPORTED(一般不会设置此种传播机制)
  • mysql关系型数据库,且存储引擎是MyISAM而非InnoDB,则事务会不起作用(基本开发中不会遇到);

非public权限修饰