• Spring学习笔记——Spring事务仅仅对执行时异常回滚


    我们在使用Spring时候一般都知道事务在遇到异常的时候会回滚。岂不知Spring的事务默认仅仅有在发生执行时异常即:RunTimeException时才会发生事务,假设一个方法抛出Exception或者Checked异常Spring的事务并不会回滚。


    以下我们来看看异常的分类。异常一般分为Checked异常和RunTime异常。


    CheckedException:
    Java觉得Checked异常都是能够被处理的异常,所以Java程序必须显式的处理Checked异常,假设程序没有处理checked异常,程序在编译时候将错误发生。


    我们比較熟悉的Checked异常有
    Java.lang.ClassNotFoundException
    Java.lang.NoSuchMetodException
    java.io.IOException
    RunTimeException:
    Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和执行效率影响非常大。所以由系统自己主动检測并将它们交给缺省的异常处理程序。

    当然假设你有处理要求也能够显示捕获它们。
    我们比較熟悉的RumtimeException类的子类有
    Java.lang.ArithmeticException
    Java.lang.ArrayStoreExcetpion
    Java.lang.ClassCastException
    Java.lang.IndexOutOfBoundsException
    Java.lang.NullPointerException
    我们能够通过以下方式改变事务的默认处理方式:
    在@Transaction注解中定义noRollbackFor和RollbackFor指定某种异常是否回滚。
    @Transaction(noRollbackFor=RuntimeException.class)
    @Transaction(RollbackFor=Exception.class)
    这就要求我们在自己定义异常的时候,让自己定义的异常继承自RuntimeException,这样抛出的时候才会被Spring默认的事务处理准确处理。

  • 相关阅读:
    第十一作业
    第十次作业
    06 逻辑回归
    05 线性回归算法
    04 K均值算法--应用
    03 K均值算法
    02 机器学习相关数学基础
    01 机器学习概述
    15 语法制导的语义翻译
    014 算符优先分析
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7220248.html
Copyright © 2020-2023  润新知