网站运营建设的培训,建设银行上海黄浦支行网站,两学一做教育考试网站,通王网站内容管理系统SpringBoot事务回滚规则SpringBoot事务回滚规则SpringBoot事务回滚规则
在SpringBoot中#xff0c;如果一个方法被声明为Transactional#xff0c;则会开启一个事务。如果这个方法中的任何一个步骤失败了#xff08;比如抛出了异常#xff09;#xff0c;则该事务将会回滚…
SpringBoot事务回滚规则SpringBoot事务回滚规则SpringBoot事务回滚规则
在SpringBoot中如果一个方法被声明为Transactional则会开启一个事务。如果这个方法中的任何一个步骤失败了比如抛出了异常则该事务将会回滚到之前的状态。SpringBoot事务回滚的规则如下 默认情况下只有在抛出运行时异常即继承自RuntimeException的异常时SpringBoot才会回滚事务。如果抛出的异常是已检查异常即继承自Exception的异常则不会回滚事务。如果需要回滚事务则需要将异常转换为运行时异常可以通过在方法中抛出RuntimeException或其子类来实现。 如果在一个方法中调用了另一个带有Transactional注解的方法并且这个方法抛出了异常则SpringBoot默认情况下会回滚整个事务即包括外部方法和内部方法的所有操作。如果不想回滚整个事务可以将内部方法的事务属性设置为Propagation.REQUIRES_NEW这样内部方法的异常只会回滚内部方法的事务。 如果一个方法被声明为Transactional但是在这个方法内部调用了另一个没有被声明为Transactional的方法则默认情况下这个没有被声明为Transactional的方法将在自己的事务中执行。如果这个方法抛出异常则只会回滚这个方法的事务而不会回滚外部方法的事务。如果想要让这个方法在外部方法的事务中执行可以将它的事务属性设置为Propagation.SUPPORTS。 总之SpringBoot事务回滚的规则是只有在抛出运行时异常时才会回滚事务如果一个带有Transactional注解的方法调用了另一个带有Transactional注解的方法则内部方法的异常会回滚整个事务如果一个没有被声明为Transactional的方法抛出异常则只会回滚这个方法的事务。
如有错误还请多多指教 转载或者引用本文内容请注明来源及原作者橘足轻重