- 项目如果是
Spring Boot
、或者Spring Cloud
,切记需要在启动类上加入@EnableTransactionManagement
该注解、否则事务不生效。 @Transactional
是一个方法注解、也是一个类注解;
㈠、当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性。
㈡、当作用在方法级别时会覆盖类级别的定义。
@Transactional
当在 protected、private或者默认可见性的方法上使用时是不会生效的,也不会抛出任何异常。@Transactional
不填写rollbackFor属性,会导致抛出CheckedException
后事务不生效的情况。
@Transactional
修饰的方法或者类、不可以存在try catch
代码块,会导致事务失效。
具体原因可看我2019的一篇文章spring 中事务注解@Transactional与trycatch