Java面试题

题目

spring 事务的传播属性有哪些?

答案

spring 传播属性配置 @Transaction(Propagation=XXX) spring 事务传播属性有 7 个分别为:

  1. PROPAGATION_REQUIRED:如果当前没有事务,就创建一个事务,如果有事务,就加入到当前事务中,默认配置。
  2. PROPAGATION_SUPPORTS:支持当前的事务,如果当前没有事务,就不以事务的状态运行。
  3. PROPAGATION_MANDATORY:使用当前的事务,如果没有事务就抛出异常。
  4. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,就将当前事务挂起。
  5. PROPAGATION_NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,就将当前事务挂起。
  6. PROPAGATION_NEVER:以非事务的方式运行,如果当前存在事务就抛出异常。
  7. PROPAGATION_NESTED:如果当前存在事务就在当前事务中执行,如果没有事务就新建事务。它的特殊性在于如果外面的事务回滚,本事务会回滚,如果本事务回滚,不会影响外面的事务。