简述
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);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。