简述
Spring事务在源码中已定义得十分清晰,请间接浏览源码,联合本身业务场景应用,此处不过多赘述
@Transactional
@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @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);}