Java面试题
题目
spring 事务的传播属性有哪些?
答案
spring 传播属性配置 @Transaction(Propagation=XXX)
spring 事务传播属性有 7 个分别为:
- PROPAGATION_REQUIRED:如果当前没有事务,就创建一个事务,如果有事务,就加入到当前事务中,默认配置。
- PROPAGATION_SUPPORTS:支持当前的事务,如果当前没有事务,就不以事务的状态运行。
- PROPAGATION_MANDATORY:使用当前的事务,如果没有事务就抛出异常。
- PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,就将当前事务挂起。
- PROPAGATION_NOT_SUPPORTED:以非事务的方式运行,如果当前存在事务,就将当前事务挂起。
- PROPAGATION_NEVER:以非事务的方式运行,如果当前存在事务就抛出异常。
- PROPAGATION_NESTED:如果当前存在事务就在当前事务中执行,如果没有事务就新建事务。它的特殊性在于如果外面的事务回滚,本事务会回滚,如果本事务回滚,不会影响外面的事务。