关于java:Spring-事务传播机制

32次阅读

共计 824 个字符,预计需要花费 3 分钟才能阅读完成。

简述

Spring 事务在源码中已定义得十分清晰,请间接浏览源码,联合本身业务场景应用,此处不过多赘述

@Transactional

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Transactional {
    // 其余部分已省去
    Propagation propagation() default Propagation.REQUIRED;}

Propagation

public enum Propagation {

// 默认级别 若以后已有事务则退出 没有则新起事务
REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED),

// 若以后已有事务则退出 没有则以非事务的形式运行
SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS),

// 若以后已有事务则退出 没有则抛出异样
MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY),

// 若以后已有事务则挂起 并创立新的事务
REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW),

// 若以后已有事务则挂起 并以非事务的形式运行
NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED),

// 若以后已有事务则报错 若无则以非事务的形式运行
NEVER(TransactionDefinition.PROPAGATION_NEVER),

// 若以后已有事务创立一个新事务并嵌套执行
NESTED(TransactionDefinition.PROPAGATION_NESTED);
}

正文完
 0