不支持当前事务的情况:
- TransactionDefinition.PROPAGATION_REQUIRES_NEW: 创建一个新的事务,如果当前存在事务,则把当前事务挂起 。
- TransactionDefinition.PROPAGATION_NOT_SUPPORTED: 以非事务方式运行,如果当前存在事务,则把当前事务挂起 。
- TransactionDefinition.PROPAGATION_NEVER: 以非事务方式运行,如果当前存在事务,则抛出异常 。
- TransactionDefinition.PROPAGATION_NESTED: 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于TransactionDefinition.PROPAGATION_REQUIRED 。
(3) 事务超时属性(一个事务允许执行的最长时间)所谓事务超时,就是指一个事务所允许执行的最长时间,如果超过该时间限制但事务还没有完成,则自动回滚事务 。在 TransactionDefinition 中以 int 的值来表示超时时间,其单位是秒 。
(4) 事务只读属性(对事物资源是否执行只读操作)事务的只读属性是指,对事务性资源进行只读操作或者是读写操作 。所谓事务性资源就是指那些被事务管理的资源,比如数据源、 JMS 资源,以及自定义的事务性资源等等 。如果确定只对事务性资源进行只读操作,那么我们可以将事务标志为只读的,以提高事务处理的性能 。在 TransactionDefinition 中以 boolean 类型来表示该事务是否只读 。
(5) 回滚规则(定义事务回滚规则)这些规则定义了哪些异常会导致事务回滚而哪些不会 。默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚(这一行为与EJB的回滚行为是一致的) 。但是你可以声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚 。同样,你还可以声明事务遇到特定的异常不回滚,即使这些异常是运行期异常 。
TransactionStatus接口介绍TransactionStatus接口用来记录事务的状态 该接口定义了一组方法,用来获取或判断事务的相应状态信息.
PlatformTransactionManager.getTransaction(…) 方法返回一个 TransactionStatus 对象 。返回的TransactionStatus 对象可能代表一个新的或已经存在的事务(如果在当前调用堆栈有一个符合条件的事务) 。
【可能是最漂亮的Spring事务管理详解】TransactionStatus接口接口内容如下:
public interface TransactionStatus{boolean isNewTransaction(); // 是否是新的事物boolean hasSavepoint(); // 是否有恢复点void setRollbackOnly();// 设置为只回滚boolean isRollbackOnly(); // 是否为只回滚boolean isCompleted; // 是否已完成}
来源:掘金 链接:https://juejin.im/post/5b00c52ef265da0b95276091
推荐阅读
- 补水|30-50岁必备的护肤品套装排行榜 美白补水抗衰老 年轻漂亮不会老
- 借条丢了要不回钱?还有这些补救措施可能可以帮到你
- 面对降职降薪,单位、员工如何操作才是最佳选择?
- 油麦菜|阿娇瘦身变漂亮,扎小啾啾看不出年龄,就是穿的太舒适不时髦
- 饵料|用蚯蚓钓鱼怎么调漂?跑铅配合好这两种打窝方式,钓得就比别人多
- 野葛根是什么东西呢
- 数据库连接池到底应该设多大?这篇文章可能会颠覆你的认知
- 茵陈五苓散
- 量子计算何时投入实用? 光子可能是个关键角色
- 跑步前可以吃一些东西吗