Spring中如何配置@Transactional 注解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联主营泰来网站建设的网络公司,主营网站建设方案,APP应用开发,泰来h5小程序开发搭建,泰来网站营销推广欢迎泰来等地区企业咨询
@Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Inherited @Documented public @interface Transactional { @AliasFor("transactionManager") String value() default ""; @AliasFor("value") String transactionManager() default ""; Propagation propagation() default Propagation.REQUIRED; Isolation isolation() default Isolation.DEFAULT; int timeout() default -1; boolean readOnly() default false; Class extends Throwable>[] rollbackFor() default {}; String[] rollbackForClassName() default {}; Class extends Throwable>[] noRollbackFor() default {}; String[] noRollbackForClassName() default {}; } value 和 transactionManager 属性 它们两个是一样的意思。当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器。 propagation 属性 事务的传播行为,默认值为 Propagation.REQUIRED。 可选的值有: Propagation.REQUIRED :如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。 Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。 Propagation.MANDATORY:如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。 Propagation.REQUIRES_NEW:重新创建一个新的事务,如果当前存在事务,暂停当前的事务。 Propagation.NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,暂停当前的事务。 Propagation.NEVER:以非事务的方式运行,如果当前存在事务,则抛出异常。 Propagation.NESTED和 Propagation.REQUIRED 效果一样。 isolation 属性 public enum Isolation { DEFAULT(-1), READ_UNCOMMITTED(1), READ_COMMITTED(2), REPEATABLE_READ(4), SERIALIZABLE(8); private final int value; private Isolation(int value) { this.value = value; } public int value() { return this.value; } } 事务的隔离级别,默认值为 Isolation.DEFAULT 可选的值有: Isolation.DEFAULT 使用底层数据库默认的隔离级别。 Isolation.READ_UNCOMMITTED Isolation.READ_COMMITTED Isolation.REPEATABLE_READ Isolation.SERIALIZABLE timeout 属性 事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。 readOnly 属性 指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。 rollbackFor 属性 用于指定能够触发事务回滚的异常类型,可以指定多个异常类型。 noRollbackFor 属性 抛出指定的异常类型,不回滚事务,也可以指定多个异常类型。
看完上述内容,你们掌握Spring中如何配置@Transactional 注解的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!