简述Spring事务的传播级别 ?
参考答案:
Spring事务的传播级别定义了当事务方法被另一个事务方法调用时,应该使用哪个事务。以下是Spring框架中支持的七种事务传播级别:
- REQUIRED(默认传播级别):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常见的传播级别,也是Spring的默认传播级别。
- SUPPORTS:支持当前事务,如果当前存在事务,则加入该事务;如果当前没有事务,就以非事务方式执行。
- MANDATORY:必须在事务中执行,如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
- REQUIRES_NEW:必须创建一个新的事务,如果当前存在事务,则把当前事务挂起。
- NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则把当前事务挂起。
- NEVER:不能在事务中执行,以非事务方式执行操作。如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则与REQUIRED类似。
这些传播级别可以通过在方法上使用@Transactional
注解并设置propagation
属性来指定。这些级别提供了灵活的方式来处理事务,以适应不同的业务需求和场景。