在Spring框架中,@Transactional注解是用来管理事务的关键注解之一。本文将详细解释@Transactional注解的作用、属性和使用方法,并提供代码实例来演示其在实际项目中的应用。
1、@Transactional注解的作用
@Transactional注解用于声明一个方法需要在一个事务中执行,当方法被调用时,Spring会自动创建一个事务并在方法执行完毕后根据方法的执行结果来提交或回滚事务。
2、 @Transactional注解的属性
@Transactional注解有许多属性可以用来定制事务的行为,其中一些常用属性包括:
propagation:事务的传播行为
isolation:事务的隔离级别
timeout:事务超时时间
readOnly:是否为只读事务
rollbackFor:指定哪些异常触发事务回滚
1、propagation(事务的传播行为)
propagation属性用于指定事务方法的传播行为,即当一个事务方法被另一个事务方法调用时,应该如何处理事务。以下是propagation属性的可选值及其含义:
-
Propagation.REQUIRED:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
-
Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。
-
Propagation.MANDATORY:强制要求当前存在事务,如果没有事务则抛出异常。
-
Propagation.REQUIRES_NEW:创建一个新的事务,如果当前存在事务,则挂起当前事务。
-
Propagation.NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起当前事务。
-
Propagation.NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
-
Propagation.NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新事务。