Spring默认支持7种事务传播级别,这里事务级别要区分数据库事务隔离级别。Spring事务传播性定义在TransactionDefinition类中,下面分别介绍各种传播级别及其特点:
PROPAGATION_REQUIRED:该级别为Spring默认传播级别,特点是如果上下文中存在事务则加入到上下文事务中,如果上下文中不存在事务则新建事务。
PROPAGATION_SUPPORTS:如果上下文中存在事务则加入到上下文事务中执行,如果上下文中不存在事务则以非事务方式执行。
PROPAGATION_MANDATORY:如果上下文中没有事务直接抛出异常,即上下文中必须要有事务。
PROPAGATION_REQUIRES_NEW:每次都创建一个新的事务,如果当前上下文中存在事务则将当前上下文中事务挂起。
PROPAGATION_NOT_SUPPORTED:如果当前上下文中存在事务则将当前上下文中事务挂起,执行当前逻辑后再讲事务恢复。
PROPAGATION_NEVER:如果当前上下文中存在事务直接抛出异常。
PROPAGATION_NESTED:嵌套执行,如果当前存在事务则嵌套执行,不存在则新建事务。