我是靠谱客的博主 温柔橘子,最近开发中收集的这篇文章主要介绍Spring事务常用注解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • Spring事务常用注解
      • 1. @EnableTransactionMannagement
        • 1.1 作用
        • 1.2 属性分析
      • 2. @Transactional
        • 2.1 作用
        • 2.2 属性分析
      • 3. @TransactionEventListener
        • 3.1 作用
        • 3.2 属性分析

Spring事务常用注解

1. @EnableTransactionMannagement

1.1 作用

表示spring开启注解事务配置的支持

1.2 属性分析

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(TransactionManagementConfigurationSelector.class)
public @interface EnableTransactionManagement {
/**
* 指定基于目标类代理还是基于接口代理。
* 默认采用JDK官方的基于接口代理。
*/
boolean proxyTargetClass() default false;
/**
* 指定事务通知是如何执行的。默认是通过代理方式执行的。
* 如果是同一个类中调用的话,请采用AdviceMode.ASPECTJ
*/
AdviceMode mode() default AdviceMode.PROXY;
/**
* 指示在特定连接点应用多个通知时事务处理的执行顺序。
* 默认值是:最低优先级(Integer.MAX_VALUE)
*/
int order() default Ordered.LOWEST_PRECEDENCE;
}

2. @Transactional

2.1 作用

spring注解配置事务的核心注解,可以出现在接口、类、方法上
接口使用:当前接口的所有实现类中重写接口的方法均有事务支持
类上:当前类中的所有方法有事务支持
方法上:当前方法有事务支持
优先级: 方法>类>接口

2.2 属性分析

@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 TransactionDefinition.TIMEOUT_DEFAULT;
/**
* 指定事务是否只读
*/
boolean readOnly() default false;
/**
* 通过指定异常类的字节码,限定事务在特定情况下回滚
*/
Class<? extends Throwable>[] rollbackFor() default {};
/**
* 通过指定异常类的全限定类名,限定事务在特定情况下回滚
*/
String[] rollbackForClassName() default {};
/**
* 通过指定异常类的字节码,限定事务在特定情况下不回滚
*/
Class<? extends Throwable>[] noRollbackFor() default {};
/**
* 通过指定异常类的全限定类名,限定事务在特定情况下不回滚
*/
String[] noRollbackForClassName() default {};
}

3. @TransactionEventListener

3.1 作用

用于配置事务的监听器,使我们在事务提交和回滚前后可以做一些额外的功能

3.2 属性分析

@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@EventListener
public @interface TransactionalEventListener {
/**
* 指定事务监听器的执行是在何时。
* 取值有:
* 事务提交之前
* 事务提交之后 默认值
* 事务回滚之后
* 事务执行完成之后
*/
TransactionPhase phase() default TransactionPhase.AFTER_COMMIT;
/**
* 若没有事务的时候,对应的event是否已经执行 默认值为false表示 没事务就不执行了
*/
boolean fallbackExecution() default false;
/**
* 指定事件类的字节码
*/
@AliasFor(annotation = EventListener.class, attribute = "classes")
Class<?>[] value() default {};
/**
* 它和value属性的作用是一样的
*/
@AliasFor(annotation = EventListener.class, attribute = "classes")
Class<?>[] classes() default {};
/**
* 用于指定执行事件处理器的条件。取值是基于Spring的el表达式编写的。
*/
String condition() default "";
}

最后

以上就是温柔橘子为你收集整理的Spring事务常用注解的全部内容,希望文章能够帮你解决Spring事务常用注解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部