千家信息网

Spring中如何配置@Transactional 注解

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,Spring中如何配置@Transactional 注解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。@Target({ElementT
千家信息网最后更新 2025年01月31日Spring中如何配置@Transactional 注解

Spring中如何配置@Transactional 注解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Inherited@Documentedpublic @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[] rollbackFor() default {};    String[] rollbackForClassName() default {};    Class[] 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.SERIALIZABLEtimeout 属性事务的超时时间,默认值为-1。如果超过该时间限制但事务还没有完成,则自动回滚事务。readOnly 属性指定事务是否为只读事务,默认值为 false;为了忽略那些不需要事务的方法,比如读取数据,可以设置 read-only 为 true。rollbackFor 属性用于指定能够触发事务回滚的异常类型,可以指定多个异常类型。noRollbackFor 属性抛出指定的异常类型,不回滚事务,也可以指定多个异常类型。

看完上述内容,你们掌握Spring中如何配置@Transactional 注解的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0