Spring事务的传播属性(Propagation):
REQUIRED:支持事务,如果当前线程已存在事务,按当前事务执行,没有当前事务会创建一个事务继续执行线程
SUPPORTS:支持事务,如果当前线程有事务,会按照事务执行。没有事务,则按照无事务执行
MANDATORY:必须支持事务,如果不存在事务抛异常
REQUIRES_NEW:创建一个新事务,如果当前线程存在事务会被禁止
NOT_SUPPORTED:以无事务状态运行,不管当前线程是否存在事务
NEVER:以无事务运行,当前线程存在事务抛异常
NESTED:在嵌套事务中执行,当前线程已存在事务。
分布式下事务处理:
java下JTA规范通过UserTransaction接口实现分布式事务的支持
SpringBoot下有Atomikos和Bitronix下的XA resouces实现分布式事务
分布式下消息补偿机制,最大通知原则实现,分布式事务
TCC事务补偿机制
注意:
Spring 的事务隔离级别,实际上配置在jdbc的jar包中Connection类下。