REQUIRES_NEW仅当从事务上下文中调用该方法时,使用才有意义。从非事务上下文调用该方法时,其行为将完全相同
REQUIRED-将创建一个新事务。
这并不意味着所有客户都只有一个事务-每个客户都将从一个非事务上下文开始,并且一旦请求处理达到
@Transactional,它就会创建一个新事务。
因此,考虑到这一点,如果使用
REQUIRES_NEW该操作的语义是有意义的-比我不担心性能-这将教科书过早优化-
我宁愿强调正确性和数据完整性,并在性能指标确定后担心性能收集,而不是之前。
回滚时-使用
REQUIRES_NEW将强制开始新事务,因此,异常将回滚该事务。如果还有另一个正在执行的事务-
是否将回滚,具体取决于操作的具体情况,具体取决于异常是在堆栈中被捕获还是被捕获-
由您选择。另外,对于交易策略和回滚的更深入讨论,我建议:马克·理查兹(Mark
Richards),“交易策略:了解交易陷阱”。



