1@Target({ElementType.METHOD, ElementType.TYPE}) 2@Retention(RetentionPolicy.RUNTIME) 3@Inherited 4@Documented 5public @interface Transactional { 6 @AliasFor("transactionManager") 7 String value() default ""; 8 9 @AliasFor("value") 10 String transactionManager() default ""; 11 12 Propagation propagation() default Propagation.REQUIRED; 13 14 Isolation isolation() default Isolation.DEFAULT; 15 16 int timeout() default -1; 17 18 boolean readOnly() default false; 19 20 Class<? extends Throwable>[] rollbackFor() default {}; 21 22 String[] rollbackForClassName() default {}; 23 24 Class<? extends Throwable>[] noRollbackFor() default {}; 25 26 String[] noRollbackForClassName() default {}; 27} 28 29value 和 transactionManager 属性 30它们两个是一样的意思。当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器。 31 32propagation 属性 33事务的传播行为,默认值为 Propagation.REQUIRED。 34 35可选的值有: 36Propagation.REQUIRED :如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。 37Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。 38Propagation.MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。 39Propagation.REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,暂停当前的事务。 40Propagation.NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事务。 41Propagation.NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。 42Propagation.NESTED和 Propagation.REQUIRED 效果一样。 43 44isolation 属性 45public enum Isolation { 46 DEFAULT(-1), 47 READ_UNCOMMITTED(1), 48 READ_COMMITTED(2), 49 REPEATABLE_READ(4), 50 SERIALIZABLE(8); 51 52 private final int value; 53 54 private Isolation(int value) { 55 this.value = value; 56 } 57 58 public int value() { 59 return this.value; 60 } 61} 62事务的隔离级别,默认值为 Isolation.DEFAULT 63 64可选的值有: 65Isolation.DEFAULT 66使用底层数据库默认的隔离级别。 67Isolation.READ_UNCOMMITTED Isolation.READ_COMMITTED Isolation.REPEATABLE_READ Isolation.SERIALIZABLE 68 69timeout 属性 70事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。 71 72readOnly 属性 73指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。 74 75rollbackFor 属性 76用于指定能够触发事务回滚的异常类型,可以指定多个异常类型。 77 78noRollbackFor 属性 79抛出指定的异常类型,不回滚事务,也可以指定多个异常类型。
Spring之@Transactional 注解配置详解
Easter79
2021-10-12
1409 0 0
点赞
收藏
评论区
加载中...