在spring中可通过使用注解@Transcation( propagation = "传播机制")实现事务的传播,Spring中有7种传播机制
1.默认传播:PROPAGATION_REQUIRED
- 支持当前的事务,如果当前没有事务,就新建事务;
- 如果当前已有事务,则合并为一个事务。
解释:如果有个父方法A和子方法B,只要有一个带有事务,那么A和B都将拥有事务。
2.独立事务:REQUIRES_NEW
- 如果当前已拥有事务,则把当前事务挂起,新建事务
- 该机制下的事务不受其它调用者事务的影响
解释:如果有个父方法A(有事务)和子方法B(有事务),如果A抛出异常,而B使用了这个声明事务,那么B仍会继续提交(不受A事务影响)
3.NESTED
- 如果当前存在事务,它将会成为父级的一个子事务,方法结束后并没有提交,只是等待父事务结束才提交。
- 如果当前没有事务,则新建事务。
- 如果它本身异常,父级可以捕获到它的异常,而不进行回滚。正常提交。
- 但是如果父级异常,它必然回滚。
解释:一切以父级事务为主
4.SUPPORTS
- 若当前已有事务,则加入事务;
- 若当前没有事务,则以无事务进行;
解释:佛系事务,有就用,没有就不用了
5.NOT_SUPPORTS
不支持事务,如果当前有事务,则把该事物挂起
6.MAMDATORY
- 若当前有事务,则运行当前事务;
- 若当前没有实物,则抛异常;
解释:父级若没有事务,就不干了
7.NEVER
有事务就抛异常