美文网首页
Spring的事务传播机制

Spring的事务传播机制

作者: 进击的三文鱼 | 来源:发表于2021-05-03 21:51 被阅读0次

有时候做一件事很容易,但是维护一件事却很难,现在许许多多的技术,其实很多都是在处理一旦发生了问题,该怎么补救,许许多多的技术难点不在于如果完成一件事,而是发生了错误该怎么挽回,事务就是这种思想的实践,下面说说Spring的事务。

因为我学习时是写在代码中的,所以就偷个懒也就直接粘贴了代码。

/**
 * REQUIRED是默认的事务传播
 * 如果线程上下文有事务,就用线程上下文的事务
 * 如果没有就用这个指定的事务
 * 因为他是默认的,所以也可以不写
 * @param user
 */
@Transactional(propagation = Propagation.REQUIRED)
public void requiredExample(String user) {
    // ...
}
/**
 * SUPPORTS的事务传播
 * 如果线程上下文有事务,就用线程上下文的事务
 * 如果没有那么这个方法不使用事务,应该会影响里面
 * @param user
 */
@Transactional(propagation = Propagation.SUPPORTS)
public void supportsExample(String user) {
    // ...
}
/**
 * MANDATORYS的事务传播
 * 如果线程上下文没有事务,则抛出异常
 * @param user
 */
@Transactional(propagation = Propagation.MANDATORY)
public void mandatoryExample(String user) {
    // ...
}
/**
 * NEVER的事务传播
 * 如果线程上下文有事务,则抛出异常
 * @param user
 */
@Transactional(propagation = Propagation.NEVER)
public void neverExample(String user) {
    // ...
}

/**
 * NOT_SUPPORTED的事务传播
 * 如果线程上下文有事务,则将事务挂起,然后以不使用事务的方式执行这个方法
 * @param user
 */
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void notSupportedExample(String user) {
    // ...
}
/**
 * REQUIRES_NEW的事务传播
 * 如果线程上下文有事务,则将事务挂起,然后新建一个事务执行这个方法
 * @param user
 */
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void requiresNewExample(String user) {
    // ...
}
/**
 * NESTED的事务传播 这个有点吊
 * 如果线程上下文有事务,则建立一个保存点 如果回滚会回滚到这个保存点
 * @param user
 */
@Transactional(propagation = Propagation.NESTED)
public void nestedExample(String user) {
    // ...
}

除此之外还有spring的事务隔离级别,之前说了数据库的隔离级别,其实spring也可以定义隔离级别,和数据库是一样的,也就不多说了。

在多说一点的是

/**
 % 这样声明无论是check异常还是uncheck异常 只要抛出就会回滚
 */
@Transactional(rollbackFor = Exception.class)
public void exceptionExample(String user) throw exception {
    // ...
}

这个段代码,如果在service层被捕获,他是会回滚的

/**
 % 这样声明,抛出异常只有check异常会回滚
 */
@Transactional(rollbackFor = Exception.class)
public void exceptionExample(String user) throw exception {
    // ...
}

所以,加上

@Transactional(rollbackFor = Exception.class)
十分重要

相关文章

  • Spring 事务

    ** 但是Spring事务有自己的特点,也就是事务传播机制。** ** 所谓事务传播机制,也就是在事务在多个...

  • SSM spring 2

    1 Spring 事务实现方式、事务的传播机制、默认的事务类别 Spring事务的1+3种实现方式、7种传播行为、...

  • 问题记录

    面试题记录 spring spring事务传播机制和隔离级别? spring支持的事务类型? 什么是 Spring...

  • 有关Spring事务,看这一篇就足够了

    本文将按照声明式事务的五个特性进行介绍: 事务传播机制 事务隔离机制 只读 事务超时 回滚规则 Spring事务传...

  • #30天专注成长计划# day18 Spring事务机制2-事务

    Spring事务机制传播主要由TransactionDefinition完成,在TransactionDefini...

  • 十六、spring事务之事务传播机制和隔离级别

    Spring事务传播行为 运用Spring事务,必须要深入理解它的传播机制,否则会遇到各种意想不到的坑,Sprin...

  • 2、spring事物的传播机制与隔离级别

    Spring事务传播行为 运用Spring事务,必须要深入理解它的传播机制,否则会遇到各种意想不到的坑,Sprin...

  • Spring事务传播机制

    开发中有多个事务方法嵌套调用时,就涉及到了 Spring 的事务传播机制。 下面梳理一下 7 种传播机制的含义,做...

  • Spring事务传播机制

    传播性行为分为以下几种 PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务...

  • Spring事务传播机制

    在TransactionDefinition接口中定义了七个事务传播行为。先说最常用的三个 PROPAGATION...

网友评论

      本文标题:Spring的事务传播机制

      本文链接:https://www.haomeiwen.com/subject/srjqdltx.html