Spring事务的传播行为可以通过设置@Transactional的propagation属性来实现
-
REQUIRED(默认):如果当前没有事务,就新建一个事务;如果当前有事务,就加入该事务。(无则创,有则用)
-
SUPPORTS:如果当前有事务,则使用该事务;如果当前没有事务,则不使用事务。(无则弃,有则用)
-
MANDATORY:必须在一个已经存在的事务中执行,否则抛出异常。(无则异,有则用)
-
REQUIRES_NEW:每次都会新建一个事务,如果当前有事务,就将当前事务挂起。(无则创,有也创)
-
NOT_SUPPORTED:该方法不应该在一个事务中执行,如果当前有事务,就将当前事务挂起。(无则弃,有则挂)
-
NEVER:该方法不应该在一个事务中执行,如果当前有事务,则抛出异常。(无则弃,有则异常)
-
NESTED:如果当前存在事务,则在该事务中嵌套其他事务;如果当前没有事务,则创建一个新事务。(无则创,有则套)