共计 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);
}
正文完